Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Apa yang dimaksud dengan pemanggilan Java?
Apigee Edge menyediakan berbagai kebijakan yang menangani persyaratan pengelolaan API umum seperti keamanan, transformasi data, pengelolaan traffic, dan lainnya.
Namun, ada beberapa kasus ketika API Anda memerlukan perilaku kustom yang tidak diterapkan dalam kebijakan standar. Dalam kasus ini, Apigee menyediakan beberapa opsi yang memungkinkan Anda membuat skrip atau kode perilaku API yang disesuaikan. Salah satu pendekatannya adalah menerapkan perilaku yang diinginkan di Java.
Untuk mengetahui versi Java yang didukung, lihat Software yang didukung dan versi yang didukung.
Bagaimana cara menggunakan kode Java di proxy?
Kebijakan pemanggilan Java memungkinkan Anda memanggil kode Java dari dalam alur proxy yang sedang dieksekusi. Kode Java Anda harus menerapkan antarmuka Java khusus Edge tertentu yang memungkinkan kode berinteraksi dengan proxy yang sedang dieksekusi. Misalnya, metode Java ada untuk mendapatkan dan menetapkan header, parameter kueri, variabel alur, dan entity lainnya dalam konteks alur proxy saat ini.
Kapan saya harus menggunakan pemanggilan Java?
Mari kita lihat situasi saat pemanggilan Java berguna, dan situasi saat Anda harus mempertimbangkan pendekatan lain.
Pertama, pertimbangkan pendekatan alternatif
Sebelum menggunakan pemanggilan Java, perhatikan bahwa mungkin ada pendekatan alternatif yang dapat Anda gunakan sebagai gantinya. Contoh:
- Untuk operasi ringan, seperti panggilan API HTTP ke layanan jarak jauh, pertimbangkan untuk menggunakan kebijakan ServiceCallout. Lihat Kebijakan Service Callout.
- Untuk interaksi yang relatif sederhana dengan konten pesan, seperti mengubah atau mengekstrak header HTTP, parameter, atau konten pesan, Anda dapat menggunakan bahasa JavaScript atau Python.
Hal yang dapat Anda lakukan dalam kode Java
Pemanggilan Java mendukung operasi dasar berikut:
- Memeriksa atau memanipulasi pesan permintaan atau respons
- Mendapatkan dan menetapkan variabel alur. Anda dapat menggunakan metode Java untuk mengakses variabel alur Edge. Jika ingin mengakses informasi Peta Nilai Kunci (KVM), gunakan kebijakan KVM, tetapkan nilai KVM ke variabel alur, lalu Anda dapat mengakses variabel alur dari dalam pemanggilan Java.
- Memanggil layanan eksternal
- Menampilkan error
- Memanipulasi pesan error dan kode status
Hal yang tidak dapat Anda lakukan dalam kode Java
Sebagian besar panggilan sistem tidak diizinkan. Anda tidak dapat:
- Melakukan pembacaan atau penulisan sistem file internal. Artinya, Anda tidak dapat menggunakan paket Java apa pun untuk membaca/menulis ke dalam sistem file internal; namun, Anda dapat melakukan panggilan jarak jauh eksternal.
- Mendapatkan informasi tentang proses saat ini, daftar proses, atau penggunaan CPU/memori di mesin.
- Mengakses kode sumber di `expressions-1.0.0.jar` dan `message-flow-1.0.0.jar`.
Meskipun beberapa panggilan tersebut mungkin berfungsi, panggilan tersebut tidak didukung dan dapat dinonaktifkan secara aktif at kapan saja. Hindari melakukan panggilan tersebut dalam kode Anda.
Jangan gunakan atau mengandalkan library Java yang disertakan dengan Apigee Edge. Library tersebut hanya untuk fungsi produk Edge, dan tidak ada jaminan bahwa library akan tersedia dari rilis ke rilis. Jika Anda menggunakan library tersebut, gunakan hanya dalam demonstrasi non-produksi saja.
Pemanggilan Java
Mari kita bahas contoh pemanggilan Java hello world dasar. Dalam contoh ini, kita membuat proxy sederhana dengan pemanggilan Java yang menampilkan respons "hello world". Proxy dapat menampilkan salah satu dari dua kemungkinan respons:
- Jika Anda meneruskan header "username" dengan nilai "name", proxy akan menampilkan:
Hello, <name>!
- Jika Anda menghapus header, proxy hanya akan menampilkan:
"Hello, Guest!"
Mendownload project awal
Untuk mempermudah, kami telah menyiapkan project dasar untuk Anda di GitHub di repositori Apigee api-platform-samples.
- Download atau clone api-platform-samples ke sistem Anda.
- Di terminal atau editor kode pilihan Anda, buka project
api-platform-samples/doc-samples/java-hello.
Menulis kode Java
- Buka file sumber Java:
java-hello/callout/src/main/java/HelloJava.java. File ini adalah versi kerangka dari class Java utama yang akan kita terapkan. Paket yang diimpor paket diperlukan untuk kode Pemanggilan Java Edge. Class ini menyediakan metode yang memungkinkan Anda mengakses konteks eksekusi proxy. Kita akan membahas langkah-langkah untuk mengompilasi dan men-deploy kode ini dalam waktu singkat.
package com.apigeesample; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; import com.apigee.flow.message.MessageContext; public class HelloJava implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { // Your code here. return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
- Ganti baris yang dikomentari
// Your code heredengan kode berikut:
String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { messageContext.getMessage().setContent("Hello, Guest!"); }
- Simpan file.
Mengompilasi kode Anda dengan Maven
Project ini disiapkan agar Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan
javac, kami akan menyertakan contoh setelah contoh Maven.
- Pastikan Anda telah menginstal Maven:
mvn -version
- Jalankan skrip
java-hello/buildsetup.sh. Skrip ini menginstal dependensi JAR yang diperlukan di repo Maven lokal Anda. - cd ke direktori
java-hello/callout. - Jalankan Maven:
mvn clean package
- Jika mau, verifikasi bahwa file JAR
edge-custom-policy-java-hello.jartelah disalin kejava-hello/apiproxy/resources/java. Ini adalah lokasi yang diperlukan untuk file JAR yang ingin Anda deploy dengan proxy.
Mengompilasi dengan javac (opsional)
Di bagian sebelumnya, Anda membuat file JAR Java yang diperlukan secara otomatis dengan a
perintah Maven. Atau, jika Anda ingin menggunakan javac untuk mengompilasi kode, Anda dapat melakukan
sesuatu yang mirip dengan berikut (dari direktori java-hello). File JAR yang diperlukan
disediakan untuk Anda di direktori java-hello/lib.
- cd ke
api-platform-samples/doc-samples/java-hello. - Pastikan Anda memiliki javac di jalur Anda.
javac -version
- Jalankan perintah javac berikut:
Tindakan ini akan membuatjavac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/HelloJava.java
com/apigeesample/HelloJava.class. - Buat file JAR yang berisi class yang dikompilasi di direktori
apiproxy/resources/java. Ini adalah lokasi yang diperlukan untuk file JAR yang ingin Anda deploy dengan proxy. Anda dapat melakukannya dengan menjalankan perintah berikut di direktorijava-hello(jangan lupa titik di akhir).
jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
Men-deploy dan memanggil proxy
Skrip deployment disediakan di direktori ./java-hello. Namun, sebelum menjalankannya,
Anda perlu melakukan penyiapan cepat.
- cd ke
api-platform-samples/doc-samples/java-hello - Jika belum melakukannya, buka file
../../setup/setenv.shdan edit seperti yang ditunjukkan dengan informasi akun Apigee Anda: nama pengguna (alamat email yang terkait dengan akun Anda), nama organisasi, dan domain yang Anda gunakan untuk melakukan panggilan pengelolaan API. Misalnya, untuk cloud Edge, domainnya adalahhttps://api.enterprise.apigee.com; namun, domain Anda mungkin berbeda jika Anda menggunakan Edge Private Cloud. - Simpan file
setenv.sh. - Jalankan skrip deployment:
./deploy.sh
- Jika deployment berhasil, jalankan skrip pemanggilan:
./invoke.sh
Skrip pemanggilan memanggil perintah cURL yang terlihat seperti ini:
curl http://$org-$env.$api_domain/java-hello -H "username:Will"
Yang akan menampilkan "Hello, Will!
Anda dapat mengedit skrip
invoke.shuntuk mengubah nama, atau jika Anda mengubah panggilan cURL untuk menghapus header, perintah akan menampilkan "Hello, Guest!"
Tentang proxy
Mari kita periksa secara singkat kebijakan yang digunakan dalam proxy ini. Perhatikan posisi kebijakan dalam alur proxy dan alasannya.
Kebijakan Tetapkan pesan
Kebijakan Tetapkan pesan dilampirkan ke alur permintaan ProxyEndpoint. Kebijakan ini menyalin header nama pengguna dari permintaan dan menetapkannya ke respons. Operasi ini memungkinkan kebijakan Pemanggilan Java, yang dilampirkan ke alur respons, untuk mengakses header nama pengguna dan membuat isi respons kustom menggunakan nilai header tersebut.
<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader"> <DisplayName>CopyHeader</DisplayName> <Copy source="request"> <Headers> <Header name="username"/> </Headers> </Copy> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Kebijakan pemanggilan Java
Kebijakan pemanggilan Java dilampirkan ke alur respons. Hal ini karena
kode Java kustom membuat perubahan pada header dan pesan respons. Elemen ClassName
kebijakan menentukan class utama yang dieksekusi oleh kebijakan. Elemen ResourceURL adalah
nama file JAR yang Anda buat dan tambahkan ke direktori resources/java proxy.
<JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> </JavaCallout>
Hal yang perlu Anda ketahui tentang pemanggilan Java
Hal-hal penting yang perlu diperhatikan tentang penerapan pemanggilan Java adalah:
- Mengimpor class dari paket
com.apigee.flow.executiondancom.apigee.flow.message. Paket ini harus disertakan dalam file JAR yang dikemas dan di-deploy. Anda dapat mengupload JAR Java melalui editor proxy UI Pengelolaan atau menyertakannya di direktori/resources/javadalam proxy API yang Anda kembangkan secara lokal. - Mengimplementasikan antarmuka Execution. Kode Java apa pun yang dieksekusi dalam proxy API harus mengimplementasikan Execution.
- Kebijakan Pemanggilan Java tidak berisi kode sebenarnya. Sebagai gantinya, kebijakan Pemanggilan Java mereferensikan a Java 'resource', yang harus Anda kemas dalam JAR.
- Nama paket yang harus dihindari: Jangan gunakan io.apigee atau com.apigee sebagai nama paket di Pemanggilan Java. Nama tersebut direservasi dan digunakan oleh modul Apigee lainnya.
- Jika Pemanggilan Java Anda mengandalkan library pihak ketiga tambahan yang dikemas sebagai file JAR
file, tempatkan file JAR tersebut di direktori
/resources/javajuga untuk memastikan file tersebut dimuat dengan benar saat runtime. - Jika ada beberapa JAR, cukup tambahkan sebagai resource tambahan. Anda tidak perlu
mengubah konfigurasi kebijakan untuk merujuk ke file JAR tambahan. Menempatkannya di
/resources/javasudah cukup. - Untuk informasi tambahan tentang mengupload JAR Java, lihat File resource.