Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Apa yang dimaksud dengan info Java?
Apigee Edge menyediakan berbagai kebijakan yang memenuhi persyaratan pengelolaan API umum seperti seperti keamanan, transformasi data, pengelolaan lalu lintas, dan lainnya.
Namun, ada beberapa kasus saat 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 yang disesuaikan untuk perilaku API. Salah satu pendekatannya adalah mengimplementasikan perilaku yang diinginkan di Java.
Untuk versi Java yang didukung, lihat Didukung software dan versi yang didukung.
Bagaimana cara menggunakan kode Java di proxy?
Kebijakan info Java memungkinkan Anda memanggil kode Java dari dalam alur proxy eksekusi. Java Anda kode perlu mengimplementasikan antarmuka Java khusus Edge tertentu yang memungkinkan kode untuk berinteraksi dengan proxy yang dieksekusi. Misalnya, ada metode Java untuk mendapatkan dan menyetel {i>header<i}, kueri parameter, variabel alur, dan entity lainnya dalam konteks alur proxy saat ini.
Kapan saya harus menggunakan info Java?
Mari kita lihat situasi ketika info Java berguna, dan situasi yang mengharuskan Anda pertimbangkan 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 ServiceInfo. Lihat kebijakan Pemanggilan Layanan.
- Untuk interaksi yang relatif sederhana dengan konten pesan, seperti memodifikasi atau mengekstrak Header, parameter, atau konten pesan HTTP, Anda bisa menggunakan bahasa JavaScript atau Python.
Yang dapat Anda lakukan dalam kode Java
Info Java mendukung operasi dasar ini:
- Memeriksa atau memanipulasi pesan permintaan atau respons
- Mendapatkan dan menetapkan variabel alur. Anda dapat menggunakan metode Java untuk mengakses variabel alur Edge. Jika Anda ingin mengakses informasi {i>Key Value Map<i} (KVM), gunakan kebijakan KVM, menetapkan nilai KVM ke variabel {i>flow<i}, dan kemudian Anda dapat mengakses variabel {i>flow<i} dari dalam pemanggilan Java.
- Memanggil layanan eksternal
- Meningkatkan kesalahan
- Memanipulasi pesan {i>error<i} dan kode status
Yang tidak dapat Anda lakukan di Java kode
Sebagian besar panggilan sistem tidak diizinkan. Anda tidak dapat:
- Membuat pembacaan atau penulisan sistem file internal. Ini berarti Anda tidak dapat menggunakan Paket Java untuk membaca/menulis ke sistem file internal; Namun, Anda dapat membuat panggilan jarak jauh.
- Mendapatkan informasi tentang proses saat ini, daftar proses, atau penggunaan CPU/memori di komputer.
- Akses kode sumber dalam `expressions-1.0.0.jar` dan `message-flow-1.0.0.jar`.
Meskipun beberapa panggilan seperti itu mungkin berfungsi, panggilan tersebut tidak didukung dan dapat dinonaktifkan secara aktif di kapan saja. Hindari melakukan panggilan semacam itu dalam kode Anda.
Jangan gunakan atau andalkan library Java yang disertakan dengan Apigee Edge. Library tersebut adalah hanya untuk fungsi produk Edge, dan tidak ada jaminan bahwa library akan tersedia dari rilis ke rilis. Jika Anda menggunakan library semacam ini, gunakan library tersebut dalam demonstrasi non-produksi saja.
Info Java Hello
Mari kita pelajari contoh info Java halo dunia dasar. Dalam contoh ini, kita membuat proxy sederhana dengan pemanggilan Java yang mengembalikan "hello world" yang dihasilkan. {i>Proxy<i} dapat mengembalikan dari dua kemungkinan jawaban:
- Jika Anda meneruskan "nama pengguna" {i>header<i} dengan "nama" proxy, proxy akan menampilkan:
Hello, <name>!
- Jika Anda menghilangkan header, proxy hanya akan menampilkan:
"Hello, Guest!"
Mendownload project awal
Untuk menyederhanakannya, kami memiliki project dasar yang disiapkan untuk Anda di GitHub di Apigee api-platform-samples.
- Download atau clone api-platform-samples ke sistem Anda.
- Di editor kode atau terminal 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 kelas Java utama yang akan kita implementasikan. Kode paket diperlukan untuk kode Edge Java Keterangan. Class ini menyediakan metode yang memungkinkan Anda untuk mengakses konteks eksekusi proxy. Kita akan memandu Anda melalui langkah-langkah untuk mengompilasi dan men-deploy kode ini.
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
// Your code here
yang diberi komentar dengan 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.
Kompilasi kode Anda dengan Maven
Project disiapkan agar Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan
javac
, kita akan menyertakan contoh mengikuti contoh Maven.
- Pastikan Anda telah menginstal Maven:
mvn -version
- Jalankan skrip
java-hello/buildsetup.sh
. Skrip ini menginstal skrip Dependensi JAR di repo Maven lokal Anda. - ke direktori
java-hello/callout
. - Jalankan Maven:
mvn clean package
- Jika Anda mau, verifikasi bahwa file JAR
edge-custom-policy-java-hello.jar
telah 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 Java JAR yang diperlukan secara otomatis dengan
Perintah Maven. Atau, jika ingin menggunakan javac
untuk mengompilasi kode, Anda dapat melakukannya
sesuatu yang mirip dengan berikut ini (dari direktori java-hello
). Diperlukan
File JAR 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:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/HelloJava.java
Tindakan ini akan membuatcom/apigeesample/HelloJava.class
. - Buat file JAR yang berisi class yang dikompilasi di
Direktori
apiproxy/resources/java
. Ini adalah lokasi yang diperlukan untuk JAR yang ingin Anda terapkan dengan {i>proxy<i}. Anda dapat melakukannya dengan menjalankan 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 deploy disediakan di direktori ./java-hello
. Tapi sebelum Anda menjalankannya,
Anda perlu melakukan
pengaturan cepat.
- cd ke
api-platform-samples/doc-samples/java-hello
- Jika Anda belum melakukannya, buka file
../../setup/setenv.sh
dan edit seperti yang ditunjukkan dengan informasi akun Apigee Anda: nama pengguna Anda (alamat email yang dikaitkan dengan akun Anda), nama organisasi, dan domain yang digunakan untuk membuat API manajemen proyek. 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 deploy:
./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 menampilkan "Hello, Will!
Anda dapat mengedit skrip
invoke.sh
untuk mengubah nama, atau jika Anda mengubah Panggilan cURL untuk menghapus header, lalu menampilkan "Hello, Guest!"
Tentang proxy
Mari kita periksa dengan cepat kebijakan yang digunakan dalam proxy ini. Perhatikan lokasi kebijakan diletakkan di dalam alur {i>proxy<i} dan mengapa.
Kebijakan Tetapkan pesan
Kebijakan Tetapkan pesan dilampirkan ke alur permintaan ProxyEndpoint. Ini menyalin header nama pengguna dari permintaan dan menetapkannya ke respons. Operasi ini memungkinkan kebijakan Java Keterangan yang dilampirkan ke alur respons, untuk mengakses header nama pengguna dan buat 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 info Java
Kebijakan info Java dilampirkan ke alur respons. Hal ini karena
kode Java khusus membuat perubahan pada header respons dan pesan. ClassName kebijakan
menetapkan kelas utama yang dijalankan oleh kebijakan. Elemen ResourceURL adalah
nama file JAR yang Anda buat dan tambahkan ke direktori resources/java
dari
{i>proxy<i}.
<JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> </JavaCallout>
Yang perlu Anda ketahui tentang info Java
Hal-hal penting yang perlu diperhatikan tentang penerapan info Java:
- Mengimpor class dari
com.apigee.flow.execution
dancom.apigee.flow.message
paket. Paket-paket ini harus disertakan dalam file JAR yang dikemas dan di-deploy. Anda dapat mengupload Java JAR melalui proxy UI Pengelolaan bukan editor visual, atau Anda dapat menyertakannya dalam direktori/resources/java
di proxy API yang yang Anda kembangkan secara lokal. - Mengimplementasikan antarmuka Execution. Setiap kode Java yang dieksekusi dalam proxy API harus dan menerapkan Eksekusi.
- Kebijakan Pemanggilan Java tidak berisi kode sebenarnya. Sebagai gantinya, kebijakan Java Keterangan merujuk 'resource' Java, yang harus Anda kemas dalam JAR.
- Nama paket yang harus dihindari: Jangan gunakan io.apigee atau com.apigee sebagai nama paket di Info Java. Data tersebut dicadangkan dan digunakan oleh modul Apigee lainnya.
- Jika Java Keterangan Anda mengandalkan library pihak ketiga tambahan yang dikemas sebagai JAR independen
file, lalu tempatkan file JAR tersebut di direktori
/resources/java
juga untuk memastikan bahwa mereka dimuat dengan benar pada saat {i>runtime<i}. - Jika ada beberapa JAR, cukup tambahkan sebagai resource tambahan. Anda tidak perlu
mengubah konfigurasi kebijakan untuk merujuk
ke file JAR tambahan. Menerapkannya
/resources/java
sudah cukup. - Untuk informasi tambahan tentang cara mengupload JAR Java, lihat File resource.