JavaCallout politikası

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 metni

Java 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>

&lt;JavaCallout&gt; ö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ı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğ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 name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;ClassName&gt; öğ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

&lt;Property&gt; öğ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.

&lt;ResourceURL&gt; öğ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.

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 veya com.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