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ı

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.

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