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
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 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ı
Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
| Hata kodu | HTTP durumu | Neden | Düzelt |
|---|---|---|---|
steps.javacallout.ExecutionError |
500 | Java kodu bir istisna oluşturduğunda veya JavaScript çağrısı politikası yürütülürken null döndürdüğünde ortaya çıkar. | build |
Dağıtım hataları
Politikayı içeren proxy dağıtıldığında bu hatalar oluşabilir.
| Hata adı | Hata dizesi | HTTP durumu | Şu durumda gerçekleşir: |
|---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
Yok | <ResourceURL> öğesinde belirtilen dosya mevcut değil. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
Yok | <ClassName> öğesinde belirtilen sınıf dosyası
jar. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
Yok | Hata dizesini inceleyin. Ayrıca bkz. Desteklenenler yazılım ve desteklenen sürümler hakkında daha fazla bilgi edinin. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
Yok | Hata dizesini inceleyin. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
Yok | Hata dizesini inceleyin. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
Yok | Hata dizesini inceleyin. |
NoResourceForURL |
Could not locate a resource with URL [string] |
Yok | Hata dizesini inceleyin. |
Hata değişkenleri
Bu değişkenler, politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
| Değişkenler | Konum | Örnek |
|---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | javacallout.JC-GetUserData.failed = true |
Örnek hata yanıtı
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Örnek hata kuralı
<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.