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ı
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
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.