Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Apa yang dimaksud dengan info Java?
Jika Anda baru mengenal info Java, sebaiknya mulai dengan Cara membuat info Java.
Menangani error di Info Java
Saat menulis Info Java, Anda mungkin ingin melakukan penanganan error kustom dalam kode Java. Misalnya, Anda mungkin ingin menampilkan header dan pesan error khusus, dan/atau menetapkan variabel alur dengan informasi error dalam alur proxy di Edge.
Mari kita lihat contoh Info Java sederhana yang menggambarkan pola penanganan error kustom dasar. Contoh ini menampilkan pesan error khusus saat terjadi pengecualian. Kode ini juga menempatkan stacktrace error ke dalam variabel alur, yang dapat menjadi teknik proses debug yang praktis.
Mendownload project
Untuk mempermudah, Anda dapat mendownload project ini dari repositori api-platform-samples Apigee di GitHub.
- Download atau clone api-platform-samples ke sistem Anda.
- Di terminal atau editor kode pilihan Anda, buka
project
api-platform-samples/doc-samples/java-error
.
Contoh kode Java
Pola penanganan errornya mudah. Anda dapat menetapkan variabel alur dalam
konteks alur Edge saat ini dengan metode messageContext.setVariable()
. Untuk menampilkan informasi error kustom, buat instance ExecutionResult
dan panggil metode di dalamnya untuk menetapkan respons dan header error.
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; import com.apigee.flow.execution.Action; import org.apache.commons.lang.exception.ExceptionUtils; public class JavaError implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { throw new RuntimeException("Please specify a name parameter!"); } return ExecutionResult.SUCCESS; } catch (RuntimeException ex) { ExecutionResult executionResult = new ExecutionResult(false, Action.ABORT); //--Returns custom error message and header executionResult.setErrorResponse(ex.getMessage()); executionResult.addErrorResponseHeader("ExceptionClass", ex.getClass().getName()); //--Set flow variables -- may be useful for debugging. messageContext.setVariable("JAVA_ERROR", ex.getMessage()); messageContext.setVariable("JAVA_STACKTRACE", ExceptionUtils.getStackTrace(ex)); return executionResult; } } }
Mengompilasi kode dengan Maven
Project sudah disiapkan agar Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan
javac
, kami juga akan menyertakan contoh.
- Pastikan Anda telah menginstal Maven:
mvn -version
- Jalankan skrip
java-error/buildsetup.sh
. Skrip ini akan menginstal dependensi JAR yang diperlukan dalam repo Maven lokal Anda. - {i>cd<i} ke direktori
java-error/callout
. - Jalankan Maven:
mvn clean package
- Jika mau, pastikan bahwa file JAR
edge-custom-policy-java-error.jar
telah disalin kejava-error/apiproxy/resources/java
. Ini adalah lokasi yang diperlukan untuk file JAR yang ingin Anda deploy dengan proxy.
Mengompilasi dengan javac
Jika ingin menggunakan javac
untuk mengompilasi kode, Anda dapat melakukan sesuatu yang mirip dengan berikut ini (dari direktori java-error
). File JAR yang diperlukan disediakan untuk Anda di direktori java-error/lib
.
- {i>cd<i} ke
api-platform-samples/doc-samples/java-error
. - 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/JavaProperties.java
- Salin file JAR ke direktori apiproxy/resources/java. Ini adalah lokasi yang diperlukan
untuk file JAR yang ingin Anda deploy dengan proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Men-deploy dan memanggil proxy
Skrip deployment disediakan di direktori ./java-error
. Namun, sebelum menjalankannya,
Anda perlu melakukan penyiapan cepat.
- cd ke
api-platform-samples/doc-samples/java-error
- Jika Anda belum melakukannya, buka file
../../setup/setenv.sh
dan edit file tersebut 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 Edge cloud, 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-error
Karena panggilan tidak menyertakan parameter kueri "name", kode Java akan menampilkan error runtime. Proxy tersebut menampilkan pesan dan header ini:
- Pesan error:
Please specify a name parameter!
- Header:
ExceptionClass: java.lang.RuntimeException