JavaCallout politikası

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

Basit örnek

Java çağrısı oluşturma

Java kodunuzdaki özellikleri alma

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 akış değişkenlerini ayarlama

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

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

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

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.apigee veya com.apigee kullanmayı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/java dizinine 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