Cara membuat info Java

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.

  1. Download atau clone api-platform-samples ke sistem Anda.
  2. Di terminal atau editor kode pilihan Anda, buka project api-platform-samples/doc-samples/java-hello.

Menulis kode Java

  1. 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;
                    }
            }
    
    }
  2. Ganti baris yang dikomentari // Your code here 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!");
    }
  3. 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.

  1. Pastikan Anda telah menginstal Maven:

    mvn -version
  2. Jalankan skrip java-hello/buildsetup.sh. Skrip ini menginstal dependensi JAR yang diperlukan di repo Maven lokal Anda.
  3. cd ke direktori java-hello/callout.
  4. Jalankan Maven:

    mvn clean package
  5. Jika mau, verifikasi bahwa file JAR edge-custom-policy-java-hello.jar telah disalin ke java-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.

  1. cd ke api-platform-samples/doc-samples/java-hello.
  2. Pastikan Anda memiliki javac di jalur Anda.

    javac -version
  3. 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 membuat com/apigeesample/HelloJava.class.
  4. 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 direktori java-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.

  1. cd ke api-platform-samples/doc-samples/java-hello
  2. Jika belum melakukannya, buka file ../../setup/setenv.sh dan 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 adalah https://api.enterprise.apigee.com; namun, domain Anda mungkin berbeda jika Anda menggunakan Edge Private Cloud.
  3. Simpan file setenv.sh.
  4. Jalankan skrip deployment:

    ./deploy.sh
  5. 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.sh untuk 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.execution dan com.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/java dalam 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/java juga 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/java sudah cukup.
  • Untuk informasi tambahan tentang mengupload JAR Java, lihat File resource.