Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
![]()
Ne?
Apigee politikaları tarafından kullanıma hazır olarak sunulmayan özel davranışları uygulamak için Java'yı kullanmanızı sağlar. Java kodunuzda, ileti özelliklerine (üstbilgiler, sorgu parametreleri, içerik) ve proxy akışındaki akış değişkenlerine erişebilirsiniz. Bu politikayı kullanmaya yeni başlıyorsanız Java çağrısı oluşturma başlıklı makaleyi inceleyin.
Desteklenen Java sürümleri için Desteklenen yazılımlar ve desteklenen sürümler başlıklı makaleyi inceleyin.
Zaman
Kurallar için Java çağrısı oluşturma başlıklı makaledeki "Ne zaman Java çağrısı kullanmalıyım?" bölümünü inceleyin.
Hakkında
Java Callout politikası, akış değişkenlerini almanıza ve ayarlamanıza, özel mantık yürütmenize ve hata işlemeyi gerçekleştirmenize, isteklerden veya yanıtlardan veri ayıklamanıza ve daha fazlasına olanak tanır. Bu politika, diğer standart Edge politikaları kapsamında olmayan özel davranışlar uygulamanıza olanak tanır.
Java uygulamanızı ihtiyacınız olan tüm paket JAR dosyalarıyla paketleyebilirsiniz. Java Callout ile yapabileceklerinizle ilgili bazı kısıtlamalar olduğunu unutmayın. Bunlar Kısıtlamalar bölümünde listelenmiştir.Örnekler
Basit örnek
Java çağrısı oluşturmaJava kodunuzdaki özellikleri alma
Politikanın <Property> öğesi, Java kodunuzda çalışma zamanında alabileceğiniz bir ad/değer çifti belirtmenize olanak tanır. Özelliklerin kullanıldığı çalışan bir örnek için Java çağrısında özellikleri kullanma başlıklı makaleyi inceleyin.
Java kodundan özelliğe erişmek için kullanılacak adı belirtmek üzere <Property> öğesinin name özelliğini kullanın. <Property> öğesinin değeri (açılış ve kapanış etiketleri arasındaki değer), Java kodu tarafından alınacak değerdir. Değer bir dize olmalıdır. Değeri almak için akış değişkenine referans veremezsiniz.
- Mülkü yapılandırın. Burada özellik değeri, değişken adıdır
response.status.code.<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <Properties> <Property name="source">response.status.code</Property> </Properties> </Javascript>
- Java kodunuzda, Execution sınıfı uygulamasında aşağıdaki oluşturucuyu şu şekilde uygulayın:
implementation as follows:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
Java kodunuzda akış değişkenlerini ayarlama
Java kodunuzda mesaj bağlamındaki (akış değişkenleri) değişkenlerin nasıl ayarlanacağıyla ilgili net bir açıklama için bu Apigee Topluluğu gönderisine bakın.
Öğe referansı
Öğe referansı, JavaCallout politikasının öğelerini ve özelliklerini açıklar.
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> özellikleri
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
| Özellik | Açıklama | Varsayılan | Varlık |
|---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
| Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
|---|---|
| Varlık | İsteğe bağlı |
| Tür | Dize |
<ClassName> öğesi
Java Callout politikası çalıştırıldığında yürütülen Java sınıfının adını belirtir. Sınıf, <ResourceURL> ile belirtilen JAR dosyasına dahil edilmelidir. Ayrıca Java çağrısı oluşturma başlıklı makaleye de göz atın.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
| Varsayılan: | Yok |
| Mevcut olma: | Zorunlu |
| Tür: | Dize |
<Property> öğesi
Çalışma zamanında Java kodundan erişebileceğiniz bir özelliği belirtir. Her özellik için değişmez bir dize değeri belirtmeniz gerekir. Bu öğede akış değişkenlerine referans veremezsiniz. Özelliklerin kullanıldığı çalışan bir örnek için Java çağrısında özellikleri kullanma başlıklı makaleyi inceleyin.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Dize |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık |
|---|---|---|---|
| ad |
Tesisin adını belirtir. |
Yok | Zorunlu. |
<ResourceURL> öğesi
Bu öğe, Java çağrı politikası çalıştırıldığında yürütülecek Java JAR dosyasını belirtir.
Bu dosyayı, API proxy paketindeki /apiproxy/resources/java altında veya API proxy düzenleyicisinin Gezgin bölmesindeki Komut Dosyaları bölümünde API proxy kapsamına kaydedebilir ya da Kaynak dosyaları bölümünde açıklandığı gibi birden fazla API proxy'sinde yeniden kullanmak için kuruluş veya ortam kapsamlarına kaydedebilirsiniz.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
| Varsayılan: | Yok |
| Mevcut olma: | Zorunlu |
| Tür: | Dize |
Hata referansı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP status | Cause | Fix |
|---|---|---|---|
steps.javacallout.ExecutionError |
500 | Occurs when Java code throws an exception or returns null during the execution of a JavaCallout policy. | build |
Deployment errors
These errors can occur when the proxy containing the policy is deployed.
| Error name | Fault string | HTTP status | Occurs when |
|---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
N/A | The file specified in the <ResourceURL> element does not exist. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
N/A | The class file specified in the <ClassName> element is not in the
jar. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
N/A | See fault string. See also Supported software and supported versions. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
N/A | See fault string. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
N/A | See fault string. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
N/A | See fault string. |
NoResourceForURL |
Could not locate a resource with URL [string] |
N/A | See fault string. |
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
| Variables | Where | Example |
|---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | javacallout.JC-GetUserData.failed = true |
Example error response
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Example fault rule
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
Şemalar
Derleme ve dağıtım
Özel Java kodunuzu derleme ve proxy ile dağıtma hakkında ayrıntılı bilgi için Java çağrısı oluşturma başlıklı makaleyi inceleyin.
Kısıtlamalar
Aşağıda, Java Callout'ları yazarken dikkate almanız gereken kısıtlamalar verilmiştir:
- Çoğu sistem çağrısına izin verilmez. Örneğin, dahili dosya sisteminde okuma veya yazma işlemleri yapamazsınız.
- Soketler aracılığıyla ağa erişim. Apigee, sitelocal, anylocal, loopback ve linklocal adreslerine erişimi kısıtlar.
- Açıklama metni, mevcut işlem, işlem listesi veya makinedeki CPU/bellek kullanımı hakkında bilgi alamaz. Bu tür aramaların bazıları işlevsel olsa da desteklenmez ve herhangi bir zamanda etkin olarak devre dışı bırakılabilir. İleriye dönük uyumluluk için kodunuzda bu tür çağrılar yapmaktan kaçınmalısınız.
- Apigee Edge ile birlikte gelen Java kitaplıklarının kullanılması desteklenmez. Bu kitaplıklar yalnızca Edge ürün işlevselliği içindir ve bir kitaplığın sürümden sürüme kullanılabileceği garanti edilmez.
- Java'da açıklama metinlerinde paket adı olarak
io.apigeeveyacom.apigeekullanmayın. Bu adlar ayrılmıştır ve diğer Apigee modülleri tarafından kullanılır.
Sunum
JAR dosyasını bir API proxy'sinde /resources/java altına yerleştirin. Java Callout'unuz bağımsız JAR dosyaları olarak paketlenmiş ek üçüncü taraf kitaplıklarına bağlıysa bu JAR dosyalarını çalışma zamanında doğru şekilde yüklendiklerinden emin olmak için /resources/java dizinine de yerleştirin.
Proxy'yi oluşturmak veya değiştirmek için yönetim kullanıcı arayüzünü kullanıyorsanız yeni bir kaynak ekleyin ve ek bir bağımlı JAR dosyası belirtin. Birden fazla JAR varsa bunları ek kaynak olarak eklemeniz yeterlidir. Ek JAR dosyalarına başvurmak için politika yapılandırmasını değiştirmeniz gerekmez. Bu öğeleri /resources/java içine yerleştirmeniz yeterlidir.
Java JAR'larını yükleme hakkında bilgi edinmek için Kaynak dosyaları başlıklı makaleyi inceleyin.
Maven veya javac kullanarak Java çağrısının nasıl paketlenip dağıtılacağını gösteren ayrıntılı bir örnek için Java çağrısı oluşturma başlıklı makaleye bakın.
Javadoc
Java çağrı kodu yazmak için Javadoc'u GitHub'da buradan inceleyebilirsiniz. HTML'yi sisteminize klonlamanız veya indirmeniz ve ardından index.html dosyasını bir tarayıcıda açmanız yeterlidir.
Kullanım notları
- Java Callout politikası gerçek kod içermez. Bunun yerine, Java Callout politikası bir Java "kaynağına" referans verir ve Java kodunun yürütüldüğü API akışındaki adımı tanımlar. Java JAR'ınızı Yönetim kullanıcı arayüzü proxy düzenleyicisi aracılığıyla yükleyebilir veya yerel olarak geliştirdiğiniz API proxy'lerinde
/resources/javadizinine ekleyebilirsiniz. - Uzak hizmetlere yapılan API çağrıları gibi basit işlemler için ServiceCallout politikasını kullanmanızı öneririz. Hizmet açıklama metni politikasına bakın.
- HTTP üst bilgilerini, parametreleri veya ileti içeriğini değiştirme ya da çıkarma gibi ileti içeriğiyle ilgili nispeten basit etkileşimler için Apigee, JavaScript politikası kullanılmasını önerir.
İlgili konular
- İlgili örnekler için java-cookbook repository deposuna bakın.