Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
![]()
Apa
Memungkinkan Anda menggunakan Java untuk menerapkan perilaku kustom yang tidak disertakan secara langsung oleh kebijakan Apigee. Dalam kode Java, Anda dapat mengakses properti pesan (header, parameter kueri, konten) dan variabel alur dalam alur proxy. Jika Anda baru mulai menggunakan kebijakan ini, lihat Cara membuat panggilan Java.
Untuk mengetahui versi Java yang didukung, lihat Software yang didukung dan versi yang didukung.
Kapan
Untuk mengetahui panduan, lihat "Kapan sebaiknya saya menggunakan panggilan Java?" di Cara membuat panggilan Java.
Tentang
Kebijakan Java Callout memungkinkan Anda mendapatkan dan menetapkan variabel alur, menjalankan logika kustom dan melakukan penanganan error, mengekstrak data dari permintaan atau respons, dan lainnya. Kebijakan ini memungkinkan Anda menerapkan perilaku kustom yang tidak tercakup oleh kebijakan Edge standar lainnya.
Anda dapat mengemas aplikasi Java dengan file JAR paket apa pun yang Anda butuhkan. Perhatikan bahwa ada beberapa batasan terkait hal yang dapat Anda lakukan dengan Panggilan Java. Hal ini tercantum di bawah dalam Pembatasan.Contoh
Contoh sederhana
Cara membuat balon teks JavaMengambil properti dalam kode Java Anda
Elemen <Property> kebijakan memungkinkan Anda menentukan pasangan nama/nilai yang dapat diambil saat runtime dalam kode Java Anda. Untuk contoh fungsi yang menggunakan
properti, lihat Cara menggunakan properti
dalam panggilan Java.
Gunakan atribut name elemen <Property> untuk menentukan nama yang akan digunakan untuk mengakses properti dari kode Java. Nilai elemen <Property> (nilai antara tag pembuka dan penutup) adalah nilai yang akan diterima oleh
kode Java. Nilai harus berupa string; Anda tidak dapat mereferensikan variabel alur untuk mendapatkan
nilai.
- Konfigurasi properti. Di sini, nilai propertinya adalah nama variabel
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>
- Dalam kode Java Anda, terapkan konstruktor berikut pada implementasi class Execution sebagai berikut:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
Menetapkan variabel alur dalam kode Java
Untuk mengetahui deskripsi yang jelas tentang cara menyetel variabel dalam konteks pesan (variabel alur) di kode Java Anda, lihat postingan Komunitas Apigee ini.
Referensi elemen
Referensi elemen menjelaskan elemen dan atribut kebijakan JavaCallout.
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
Atribut <JavaCallout>
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:
| Atribut | Deskripsi | Default | Ketersediaan |
|---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Setel ke |
salah | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini tidak digunakan lagi. |
salah | Tidak digunakan lagi |
<DisplayName> elemen
Gunakan selain atribut name untuk memberi label kebijakan di
editor proxy UI dengan nama natural language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
| Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
|---|---|
| Ketersediaan | Opsional |
| Jenis | String |
Elemen <ClassName>
Menentukan nama class Java yang dieksekusi saat kebijakan Java Callout berjalan. class harus disertakan dalam file JAR yang ditentukan oleh <ResourceURL>. Lihat
juga Cara membuat panggilan
Java.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
| Default: | T/A |
| Kehadiran: | Wajib |
| Jenis: | String |
Elemen <Property>
Menentukan properti yang dapat Anda akses dari kode Java saat runtime. Anda harus menentukan nilai string literal untuk setiap properti; Anda tidak dapat mereferensikan variabel alur dalam elemen ini. Untuk contoh kerja yang menggunakan properti, lihat Cara menggunakan properti dalam panggilan Java.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
| Default: | Tidak ada |
| Kehadiran: | Opsional |
| Jenis: | String |
Atribut
| Atribut | Deskripsi | Default | Ketersediaan |
|---|---|---|---|
| nama |
Menentukan nama properti. |
T/A | Wajib. |
Elemen<ResourceURL>
Elemen ini menentukan file JAR Java yang akan dieksekusi saat kebijakan panggilan Java dijalankan.
Anda dapat menyimpan file ini di cakupan proxy API (di bagian
/apiproxy/resources/java dalam paket proxy API atau di bagian Skrip di
panel Navigator editor proxy API), atau di cakupan organisasi atau lingkungan untuk digunakan kembali
di beberapa proxy API, seperti yang dijelaskan dalam File resource.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
| Default: | Tidak ada |
| Kehadiran: | Wajib |
| Jenis: | String |
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan kesalahan yang dikembalikan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu kesalahan. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Penanganan kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
| Kode error | Status HTTP | Penyebab | Perbaiki |
|---|---|---|---|
steps.javacallout.ExecutionError |
500 | Terjadi saat kode Java menampilkan pengecualian atau menampilkan null selama eksekusi kebijakan Javacallout. | build |
Error saat deployment
Error ini dapat terjadi saat proxy yang berisi kebijakan di-deploy.
| Nama error | String kesalahan | Status HTTP | Terjadi saat |
|---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
T/A | File yang ditentukan dalam elemen <ResourceURL> tidak ada. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
T/A | File class yang ditetapkan dalam elemen <ClassName> tidak ada dalam
stoples. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
T/A | Lihat string kesalahan. Lihat juga Didukung software dan versi yang didukung. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
T/A | Lihat string kesalahan. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
T/A | Lihat string kesalahan. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
T/A | Lihat string kesalahan. |
NoResourceForURL |
Could not locate a resource with URL [string] |
T/A | Lihat string kesalahan. |
Variabel kesalahan
Variabel ini ditetapkan saat kebijakan ini memicu error. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
| Variabel | Di mana | Contoh |
|---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | javacallout.JC-GetUserData.failed = true |
Contoh respons error
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Contoh aturan kesalahan
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
Skema
Mengompilasi dan men-deploy
Untuk mengetahui detail tentang cara mengompilasi kode Java kustom dan men-deploy-nya dengan proxy, lihat Cara membuat panggilan Java.
Batasan
Berikut adalah batasan yang perlu Anda pertimbangkan saat menulis Panggilan Java:
- Sebagian besar panggilan sistem tidak diizinkan. Misalnya, Anda tidak dapat melakukan operasi baca atau tulis sistem file internal.
- Akses ke jaringan melalui soket. Apigee membatasi akses ke alamat sitelocal, anylocal, loopback, dan linklocal.
- Pesan singkat tidak dapat memperoleh informasi tentang proses saat ini, daftar proses, atau penggunaan CPU/memori di mesin. Meskipun beberapa panggilan tersebut mungkin berfungsi, panggilan tersebut tidak didukung dan dapat dinonaktifkan secara aktif kapan saja. Untuk kompatibilitas ke depan, Anda sebaiknya menghindari melakukan panggilan tersebut dalam kode Anda.
- Penggunaan library Java yang disertakan dengan Apigee Edge tidak didukung. Library tersebut hanya untuk fungsi produk Edge, dan tidak ada jaminan bahwa library akan tersedia dari rilis ke rilis.
- Jangan gunakan
io.apigeeataucom.apigeesebagai nama paket di Panggilan Balik Java. Nama tersebut dicadangkan dan digunakan oleh modul Apigee lainnya.
Kemasan
Tempatkan JAR di proxy API dalam /resources/java. Jika Java Callout Anda bergantung
pada library pihak ketiga tambahan yang dikemas sebagai file JAR independen, tempatkan file JAR tersebut
di direktori /resources/java juga untuk memastikan file tersebut dimuat dengan benar saat
runtime.
Jika Anda menggunakan UI pengelolaan untuk membuat atau mengubah proxy, tambahkan resource baru dan
tentukan file JAR dependen tambahan. Jika ada beberapa JAR, cukup tambahkan sebagai
resource tambahan. Anda tidak perlu mengubah konfigurasi kebijakan untuk merujuk ke file JAR tambahan. Menempatkannya di /resources/java sudah cukup.
Untuk mengetahui informasi tentang cara mengupload JAR Java, lihat File resource.
Untuk contoh mendetail yang menunjukkan cara mengemas dan men-deploy Panggilan Java menggunakan Maven atau javac, lihat Cara membuat panggilan Java.
Javadoc
Javadoc untuk menulis kode Panggilan Java disertakan di sini di GitHub. Anda harus meng-clone atau mendownload HTML ke sistem Anda, lalu cukup buka file index.html di browser.
Catatan penggunaan
- Kebijakan Java Callout tidak berisi kode sebenarnya. Sebagai gantinya, kebijakan Panggilan Java mereferensikan 'resource' Java dan menentukan Langkah dalam alur API tempat kode Java dieksekusi. Anda dapat
mengupload JAR Java melalui editor proxy UI Pengelolaan, atau menyertakannya di
direktori
/resources/javadalam proxy API yang Anda kembangkan secara lokal. - Untuk operasi ringan, seperti panggilan API ke layanan jarak jauh, sebaiknya gunakan kebijakan ServiceCallout. Lihat kebijakan Service Callout.
- Untuk interaksi yang relatif sederhana dengan konten pesan, seperti mengubah atau mengekstrak header HTTP, parameter, atau konten pesan, Apigee merekomendasikan penggunaan kebijakan JavaScript.
Topik terkait
- Untuk contoh terkait, lihat repositori java-cookbook.