JavaCallout politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

Apigee politikaları tarafından kullanıma hazır olmayan özel davranışlar uygulamak için Java'yı kullanabilmenizi sağlar. Java kodunuzda, proxy akışındaki mesaj özelliklerine (başlıklar, sorgu parametreleri, içerik) ve akış değişkenlerine erişebilirsiniz. Bu politikayı kullanmaya yeni başlıyorsanız Java açıklama metni nasıl oluşturulur? bölümüne bakın.

Desteklenen Java sürümleri için Desteklenen yazılımlar ve desteklenen sürümler konusuna bakın.

Şu Durumda:

Yönergeler için Java açıklama metni nasıl oluşturulur? başlıklı makaledeki "Java açıklama metnini ne zaman kullanmalıyım?" konusuna bakın.

Hakkında

Java Çağrı politikası, akış değişkenlerini alıp ayarlamanızı, özel mantık yürütmenizi, hata işleme gerçekleştirmenizi, isteklerden veya yanıtlardan veri çıkarmanızı ve çok daha fazlasını yapmanızı sağlar. Bu politika, diğer standart Edge politikalarının kapsamına girmeyen özel davranışlar uygulamanıza olanak tanır.

Java uygulamanızı, ihtiyacınız olan JAR paket dosyalarıyla paketleyebilirsiniz. Java Call ile yapabileceklerinize ilişkin bazı kısıtlamalar olduğunu unutmayın. Bunlar, aşağıdaki Kısıtlamalar bölümünde listelenmiştir.

Sana Özel

Basit örnek

Java çağrısı oluşturma

Java kodunuzdaki özellikleri alma

Politikanın <Property> öğesi, çalışma zamanında Java kodunuzda alabileceğiniz bir ad/değer çifti belirtmenizi sağlar. Özelliklerin kullanıldığı çalışan bir örnek için Java açıklama metninde özellikleri kullanma bölümüne bakın.

Mülke Java kodundan erişilecek adı belirtmek için <Mülk> öğ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 bir akış değişkenine referansta bulunamazsınız.

  • Mülkü yapılandırın. Burada, özellik değeri response.status.code değişken adıdır.
    <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, aşağıdaki oluşturucuyu Yürütme sınıfı uygulamasına aşağıdaki gibi 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

Java kodunuzdaki mesaj bağlamında (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>

<JavaDescription> ö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çerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

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

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<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 Çağrı politikası çalıştırıldığında yürütülecek Java sınıfının adını belirtir. Sınıf, <ResourceURL> ile belirtilen JAR dosyasına eklenmelidir. Java çağrısı oluşturma konusuna da bakın.

<JavaCallout name="MyJavaCalloutPolicy">
   <ResourceURL>java://MyJavaCallout.jar</ResourceURL>
   <ClassName>com.example.mypolicy.MyJavaCallout</ClassName>
</JavaCallout>
Varsayılan: Yok
Bulunma: Gerekli
Tür: Dize

<Mülk> öğesi

Çalışma zamanında Java kodundan erişebileceğiniz bir özelliği belirtir. Her mülk için bir değişmez dize değeri belirtmeniz gerekir. Bu öğede akış değişkenlerine başvuruda bulunamazsınız. Özelliklerin kullanıldığı çalışan bir örnek için Java açıklama metninde özellikleri kullanma bölümüne bakın.

<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

Özelliğin 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ı, Kaynak dosyaları bölümünde açıklandığı gibi API proxy kapsamında (API proxy paketindeki /apiproxy/resources/java bölümünde veya API proxy düzenleyicisi bölmesinin Komut Dosyaları bölümünde) ya da birden çok API proxy'si arasında yeniden kullanılabilecek kuruluş veya ortam kapsamlarında saklayabilirsiniz.

<JavaCallout name="MyJavaCalloutPolicy">
   <ResourceURL>java://MyJavaCallout.jar</ResourceURL>
   <ClassName>com.example.mypolicy.MyJavaCallout</ClassName>
</JavaCallout>
Varsayılan: Yok
Bulunma: Gerekli
Tür: Dize

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.javacallout.ExecutionError 500 Bir JavaScript politikasının yürütülmesi sırasında Java kodu bir istisna gönderdiğinde veya null değerini döndürdüğünde ortaya çıkar.

Dağıtım hataları

Bu hatalar, politikayı içeren proxy dağıtıldığında ortaya çıkabilir.

Hata adı Hata dizesi HTTP durumu Gerçekleşme zamanı:
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'da değil.
IncompatibleJavaVersion Failed to load java class [classname] definition due to - [reason] Yok Hata dizesine bakın. Desteklenen yazılımlar ve desteklenen sürümler bölümüne de bakın.
JavaClassNotFoundInJavaResource Failed to find the ClassName in java resource [jar_name] - [class_name] Yok Hata dizesine bakın.
JavaClassDefinitionNotFound Failed to load java class [class_name] definition due to - [reason] Yok Hata dizesine bakın.
NoAppropriateConstructor No appropriate constructor found in JavaCallout class [class_name] Yok Hata dizesine bakın.
NoResourceForURL Could not locate a resource with URL [string] Yok Hata dizesine bakın.

Hata değişkenleri

Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen 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"
      }
   }
}

Hata kuralı örneği

<FaultRule name="JavaCalloutFailed">
    <Step>
        <Name>AM-JavaCalloutError</Name>
    </Step>
    <Condition>(fault.name Matches "ExecutionError") </Condition>
</FaultRule>

Şemalar

Derleme ve dağıtma

Özel Java kodunuzu derleme ve proxy ile dağıtma hakkında ayrıntılı bilgi için Java açıklama metni oluşturma başlıklı makaleyi inceleyin.

Kısıtlamalar

Java Çağrıları 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 veya yazma işlemleri yapamazsınız.
  • Ağa yuvalar üzerinden erişim. Apigee; siteyerel, herhangi bir yerel, geri dönüş ve yerel bağlantı adreslerine erişimi kısıtlar.
  • Çağrı; makinedeki geçerli işlem, işlem listesi veya CPU/bellek kullanımı hakkında bilgi alamaz. Bu tür çağrıların bazıları işlevsel olsa da desteklenmez 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ına güvenmek desteklenmez. Bu kitaplıklar yalnızca Edge ürün işlevselliği içindir ve bir kitaplığın sürümden kullanıma sunulacağına dair bir garanti yoktur.
  • Java 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ılmaktadır.

Sunum

JAR'yi /resources/java altındaki bir API proxy'sine yerleştirin. Java Numaranız, bağımsız JAR dosyaları olarak paketlenmiş ek üçüncü taraf kitaplıklara dayanıyorsa bu JAR dosyalarını, çalışma zamanında doğru şekilde yüklendiklerinden emin olmak için /resources/java dizinine yerleştirin.

Proxy oluşturmak veya proxy'yi 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 ekleyin. Ek JAR dosyalarına başvurmak için politika yapılandırmasını değiştirmeniz gerekmez. Bunların /resources/java içine eklenmesi yeterlidir.

Java JAR'leri yükleme hakkında bilgi için Kaynak dosyaları başlıklı makaleyi inceleyin.

Maven veya javac kullanarak bir Java Açıklama Metninin nasıl paketlenip dağıtılacağını gösteren ayrıntılı örnek için Java açıklama metni nasıl oluşturulur? bölümüne bakın.

Javadoc

Java Açıklama kodu yazmak için Javadoc GitHub'da burada yer almaktadır. HTML'yi sisteminize klonlamanız veya indirmeniz, ardından index.html dosyasını bir tarayıcıda açmanız yeterlidir.

Kullanım notları

  • Java Çağrı politikası gerçek kod içermez. Bunun yerine, bir Java Çağrı politikası bir Java "kaynağına" referans verir ve API akışında Java kodunun yürütüldüğü 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'lerindeki /resources/java dizinine ekleyebilirsiniz.
  • Uzak hizmetlere API çağrıları gibi basit işlemler için ServiceCall politikasını kullanmanızı öneririz. Hizmet açıklama metni politikasını inceleyin.
  • Apigee; HTTP üst bilgilerini, parametreleri veya mesaj içeriğini değiştirme ya da çıkarma gibi mesaj içeriğiyle nispeten basit etkileşimler için JavaScript politikası kullanılmasını önerir.

İlgili konular