Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Apigee politikaları tarafından kullanıma hazır olmayan özel davranışlar uygulamak için Java'yı kullanabilmenizi sağlar. Java kodunuzda, proxy akışındaki mesaj özelliklerine (başlıklar, sorgu parametreleri, içerik) ve akış değişkenlerine erişebilirsiniz. Bu politikayı kullanmaya yeni başlıyorsanız Java açıklama metni nasıl oluşturulur? bölümüne bakın.
Desteklenen Java sürümleri için Desteklenen yazılımlar ve desteklenen sürümler konusuna bakın.
Şu Durumda:
Yönergeler için Java açıklama metni nasıl oluşturulur? başlıklı makaledeki "Java açıklama metnini ne zaman kullanmalıyım?" konusuna bakın.
Hakkında
Java Çağrı politikası, akış değişkenlerini alıp ayarlamanızı, özel mantık yürütmenizi, hata işleme gerçekleştirmenizi, isteklerden veya yanıtlardan veri çıkarmanızı ve çok daha fazlasını yapmanızı sağlar. Bu politika, diğer standart Edge politikalarının kapsamına girmeyen özel davranışlar uygulamanıza olanak tanır.
Java uygulamanızı, ihtiyacınız olan JAR paket dosyalarıyla paketleyebilirsiniz. Java Call ile yapabileceklerinize ilişkin bazı kısıtlamalar olduğunu unutmayın. Bunlar, aşağıdaki Kısıtlamalar bölümünde listelenmiştir.Sana Özel
Basit örnek
Java çağrısı oluşturmaJava kodunuzdaki özellikleri alma
Politikanın <Property>
öğesi, çalışma zamanında Java kodunuzda alabileceğiniz bir ad/değer çifti belirtmenizi sağlar. Özelliklerin kullanıldığı çalışan bir örnek için Java açıklama metninde özellikleri kullanma bölümüne bakın.
Mülke Java kodundan erişilecek adı belirtmek için <Mülk> öğ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 bir akış değişkenine referansta bulunamazsınız.
- Mülkü yapılandırın. Burada, özellik değeri
response.status.code
değişken adıdır.<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, aşağıdaki oluşturucuyu Yürütme sınıfı uygulamasına aşağıdaki gibi uygulayın:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
Java kodunuzda akış değişkenlerini ayarlama
Java kodunuzdaki mesaj bağlamında (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>
<JavaDescription> ö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ı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin 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 özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<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 Çağrı politikası çalıştırıldığında yürütülecek Java sınıfının adını belirtir. Sınıf, <ResourceURL>
ile belirtilen JAR dosyasına eklenmelidir. Java çağrısı oluşturma konusuna da bakın.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: | Dize |
<Mülk> öğesi
Çalışma zamanında Java kodundan erişebileceğiniz bir özelliği belirtir. Her mülk için bir değişmez dize değeri belirtmeniz gerekir. Bu öğede akış değişkenlerine başvuruda bulunamazsınız. Özelliklerin kullanıldığı çalışan bir örnek için Java açıklama metninde özellikleri kullanma bölümüne bakın.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ad |
Özelliğin 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ı, Kaynak dosyaları bölümünde açıklandığı gibi API proxy kapsamında (API proxy paketindeki /apiproxy/resources/java
bölümünde veya API proxy düzenleyicisi bölmesinin Komut Dosyaları bölümünde) ya da birden çok API proxy'si arasında yeniden kullanılabilecek kuruluş veya ortam kapsamlarında saklayabilirsiniz.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: | Dize |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | Bir JavaScript politikasının yürütülmesi sırasında Java kodu bir istisna gönderdiğinde veya null değerini döndürdüğünde ortaya çıkar. | build |
Dağıtım hataları
Bu hatalar, politikayı içeren proxy dağıtıldığında ortaya çıkabilir.
Hata adı | Hata dizesi | HTTP durumu | Gerçekleşme zamanı: |
---|---|---|---|
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'da değil. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
Yok | Hata dizesine bakın. Desteklenen yazılımlar ve desteklenen sürümler bölümüne de bakın. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
Yok | Hata dizesine bakın. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
Yok | Hata dizesine bakın. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
Yok | Hata dizesine bakın. |
NoResourceForURL |
Could not locate a resource with URL [string] |
Yok | Hata dizesine bakın. |
Hata değişkenleri
Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen 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" } } }
Hata kuralı örneği
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
Şemalar
Derleme ve dağıtma
Özel Java kodunuzu derleme ve proxy ile dağıtma hakkında ayrıntılı bilgi için Java açıklama metni oluşturma başlıklı makaleyi inceleyin.
Kısıtlamalar
Java Çağrıları yazarken göz önünde bulundurmanız gereken kısıtlamalar aşağıda belirtilmiştir:
- Çoğu sistem çağrısına izin verilmez. Örneğin, dahili dosya sisteminde okuma veya yazma işlemleri yapamazsınız.
- Ağa yuvalar üzerinden erişim. Apigee; siteyerel, herhangi bir yerel, geri dönüş ve yerel bağlantı adreslerine erişimi kısıtlar.
- Çağrı; makinedeki geçerli işlem, işlem listesi veya CPU/bellek kullanımı hakkında bilgi alamaz. Bu tür çağrıların bazıları işlevsel olsa da desteklenmez ve herhangi bir zamanda aktif 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'e dahil olan Java kitaplıklarına güvenmek desteklenmez. Bu kitaplıklar yalnızca Edge ürün işlevselliği içindir ve bir kitaplığın sürümden kullanıma sunulacağına dair bir garanti yoktur.
- Java Açıklama metinlerinde paket adı olarak
io.apigee
veyacom.apigee
kullanmayın. Bu adlar ayrılmıştır ve diğer Apigee modülleri tarafından kullanılmaktadır.
Sunum
JAR'yi /resources/java
altındaki bir API proxy'sine yerleştirin. Java Numaranız, bağımsız JAR dosyaları olarak paketlenmiş ek üçüncü taraf kitaplıklara dayanıyorsa bu JAR dosyalarını, çalışma zamanında doğru şekilde yüklendiklerinden emin olmak için /resources/java
dizinine yerleştirin.
Proxy oluşturmak veya proxy'yi 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 ekleyin. Ek JAR dosyalarına başvurmak için politika yapılandırmasını değiştirmeniz gerekmez. Bunların /resources/java
içine eklenmesi yeterlidir.
Java JAR'leri yükleme hakkında bilgi için Kaynak dosyaları başlıklı makaleyi inceleyin.
Maven veya javac kullanarak bir Java Açıklama Metninin nasıl paketlenip dağıtılacağını gösteren ayrıntılı örnek için Java açıklama metni nasıl oluşturulur? bölümüne bakın.
Javadoc
Java Açıklama kodu yazmak için Javadoc GitHub'da burada yer almaktadır. HTML'yi sisteminize klonlamanız veya indirmeniz, ardından index.html dosyasını bir tarayıcıda açmanız yeterlidir.
Kullanım notları
- Java Çağrı politikası gerçek kod içermez. Bunun yerine, bir Java Çağrı politikası bir Java "kaynağına" referans verir ve API akışında Java kodunun yürütüldüğü 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'lerindeki
/resources/java
dizinine ekleyebilirsiniz. - Uzak hizmetlere API çağrıları gibi basit işlemler için ServiceCall politikasını kullanmanızı öneririz. Hizmet açıklama metni politikasını inceleyin.
- Apigee; HTTP üst bilgilerini, parametreleri veya mesaj içeriğini değiştirme ya da çıkarma gibi mesaj içeriğiyle nispeten basit etkileşimler için JavaScript politikası kullanılmasını önerir.
İlgili konular
- İlgili örnekler için Java tarif defteri deposuna bakın.