Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
Apigee politikaları. Java kodunuzda mesaj özelliklerine (başlıklar, sorgu parametreleri, içeriği) ve akış değişkenlerini etkinleştirin. Bu politikaya yeni başlıyorsanız daha fazla bilgi için Java açıklama metni).
Java'nın desteklenen sürümleri için Desteklenenler bölümüne bakın yazılım ve desteklenen sürümler hakkında daha fazla bilgi edinin.
Zaman
Yönergeler için "Ne zaman Java çağrısı kullanmalıyım?" bölümüne bakın. Java nasıl oluşturulur? açıklama metni).
Hakkında
Java Çağrı politikası, akış değişkenleri alıp ayarlamanıza, özel mantık yürütmenize ve hata işleme, isteklerden veya yanıtlardan veri ayıklama ve daha pek çok işlem. Bu politika şunları yapmanıza olanak tanır: diğer standart Edge politikaları kapsamında olmayan özel davranışlar uygulayabilirsiniz.
Java uygulamanızı, ihtiyacınız olan JAR paketiyle paketleyebilirsiniz. Not bazı kısıtlamalar olduğunu hatırlatırız. Bunlar aşağıda listelenmiştir Kısıtlamalar başlıklı bölüme bakın.Örnekler
Basit örnek
Java oluşturma açıklama metniJava kodunuzdaki mülkleri alma
Politikanın <Property>
öğesi, bir ad/değer belirtmenize olanak tanır
çift değeri görebilirsiniz. Şunu içeren çalışan bir örnek için:
daha fazla bilgi için Mülkler nasıl kullanılır?
eklemeyi unutmayın.
<Mülk> öğesinin name
özelliğini kullanarak adı
API'yi kullanabilirsiniz. <Property>
öğesinin
değer (açılış ve kapanış etiketleri arasındaki değer),
girin. Bu değer bir dize olmalıdır. almak için bir akış değişkenine
değer.
- 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, Yürütme sınıfına aşağıdaki oluşturucuyu uygulayın
aşağıdaki adımları 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
İleti bağlamında değişkenleri (akış değişkenleri) hakkında daha fazla bilgi edinmek için Apigee Topluluk gönderisine göz atın.
Öğe referansı
Öğe referansı, JavaAçıklama Politikası'nın öğelerini ve özelliklerini açıklar.
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> özellikler
<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> öğe
Java Çağrı politikası çalıştırıldığında yürütülen Java sınıfının adını belirtir. İlgili içeriği oluşturmak için kullanılan
sınıfı, <ResourceURL>
tarafından belirtilen JAR dosyasına eklenmelidir. Görüntüleyin
Java'nın nasıl oluşturulacağı
açıklama metni).
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Varsayılan: | Yok |
Bulunma: | Zorunlu |
Tür: | Dize |
<Property> öğe
Çalışma zamanında Java kodundan erişebileceğiniz bir özelliği belirtir. Bir değişmez değer belirtmelisiniz her mülk için dize değeri; bu öğede akış değişkenlerine başvuramazsınız. Örneğin, gösteren bir örneği görmek için Bir Java açıklama metni.
<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 |
Mülkün adını belirtir. |
Yok | Zorunlu. |
<ResourceURL> öğe
Bu öğe, Java çağrı politikası olduğunda yürütülecek Java JAR dosyasını belirtir koşar.
Bu dosyayı, API proxy kapsamında (
/apiproxy/resources/java
veya
API proxy düzenleyicisinin Gezinme bölmesinde) veya kuruluş ya da ortam kapsamlarında yeniden kullanım için
Kaynak dosyaları bölümünde açıklandığı gibi birden çok API proxy'sinde.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Varsayılan: | Yok |
Bulunma: | 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
Derleniyor ve dağıtılıyor
Özel Java kodunuzu derleme ve proxy ile dağıtma hakkında ayrıntılı bilgi için bkz. Java oluşturma açıklama metni).
Kısıtlamalar
Java Açıklama Metinleri 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 işlemleri yapamazsınız yazar.
- Yuvalar aracılığıyla ağa erişim. Apigee; sitelocal, anylocal, ve yerel bağlantı adresleri.
- Açıklama metni; mevcut süreç, işlem listesi veya Makinenin CPU/bellek kullanımı. Bu tür çağrılar işlevsel olsa da desteklenmeyen 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ı desteklenmez. Bu kitaplıklar yalnızca Edge ürün işlevleri içindir ve bir kitaplığın kullanıma sunulmasını sağlayabilir.
- Java'da paket adları olarak
io.apigee
veyacom.apigee
kullanmayın Açıklama metinleri. Bu adlar diğer Apigee modülleri tarafından ayrılmış ve kullanılır.
Sunum
JAR'yi /resources/java
altındaki bir API proxy'sine yerleştirin. Java Açıklama metniniz
bağımsız JAR dosyaları olarak paketlenmiş ek üçüncü taraf kitaplıklarına ekleyin, daha sonra bu JAR dosyalarını yerleştirin
Ayrıca /resources/java
dizininde bulunur ve doğru şekilde yüklendiklerinden emin olmak için
belirler.
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 onları
ek kaynaklar. Ayrıca,
JAR dosyaları olabilir. Bunların /resources/java
içine yerleştirilmesi yeterlidir.
Java JAR'ları yükleme hakkında bilgi edinmek için Kaynak dosyaları bölümüne bakın.
Maven kullanarak Java çağrılarının nasıl paketleneceğini ve dağıtılacağını gösteren ayrıntılı bir örnek için veya javac içerebilir, bkz. Nasıl oluşturulur? bir Java çağrısı.
Javadoc
Java Çağrı kodu yazmak için Javadoc'u burada bulabilirsiniz GitHub'ı tıklayın. HTML'yi klonlamanız veya sisteminize indirmeniz ve ardından index.html dosyasına yapıştırın.
Kullanım notları
- Java Çağrı politikası gerçek bir kod içermez. Bunun yerine, Java Çağrı Politikası bir
Java "kaynak" ve Java kodunun yürütüldüğü API akışındaki Adımı tanımlar. Şunları yapabilirsiniz:
Java JAR dosyanızı Yönetim Arayüzü proxy düzenleyicisi yoluyla yükleyin veya
Yerel olarak geliştirdiğiniz API proxy'lerindeki
/resources/java
dizini. - Uzak hizmetlere API çağrıları gibi basit işlemler için Hizmet Çağrısı politikası. Hizmet Açıklama Metni Politikası'nı inceleyin.
- İleti içeriğiyle ilgili değiştirme veya çıkarma gibi nispeten basit etkileşimler için HTTP üstbilgileri, parametreleri veya mesaj içeriği için Apigee, JavaScript politikası kullanmanızı önerir.
İlgili konular
- İlgili örnekler için java-recipebook'a bakın depo.