Cara membuat info Java

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.

  1. Download atau clone api-platform-samples ke sistem Anda.
  2. Di editor kode atau terminal 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 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;
                    }
            }
    
    }
    
  2. 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!");
    }
    
  3. 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.

  1. Pastikan Anda telah menginstal Maven:

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

    mvn clean package
    
  5. Jika Anda 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 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.

  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 JAR yang ingin Anda terapkan dengan {i>proxy<i}. Anda dapat melakukannya dengan menjalankan 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 deploy disediakan di direktori ./java-hello. Tapi sebelum Anda menjalankannya, Anda perlu melakukan pengaturan cepat.

  1. cd ke api-platform-samples/doc-samples/java-hello
  2. 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 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 deploy:

    ./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 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 dan com.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.