Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Apa yang dimaksud dengan info Java?
Jika Anda baru menggunakan info Java, sebaiknya mulai dengan Cara membuat info Java info.
Menangani error di Keterangan Java
Ketika menulis Keterangan Java, Anda mungkin ingin melakukan penanganan error khusus dalam kode Java. Sebagai Anda mungkin ingin menampilkan pesan error khusus dan header dan/atau menetapkan variabel alur dengan informasi error dalam alur proxy di Apigee.
Mari kita pelajari contoh Info Java sederhana yang menggambarkan penanganan error kustom dasar pola-pola tersebut. Contoh ini menampilkan pesan error kustom saat terjadi pengecualian. Ini juga menempatkan ke dalam variabel alur, yang bisa menjadi teknik proses debug yang berguna.
Mendownload project
Untuk menyederhanakan, Anda dapat mendownload project ini dari repositori api-platform-samples Apigee di GitHub.
- Download atau clone api-platform-samples ke sistem Anda.
- Di editor kode atau terminal pilihan Anda, buka
Project
api-platform-samples/doc-samples/java-error
.
Contoh kode Java
Pola penanganan error sangat mudah. Anda dapat menetapkan variabel alur dalam
Konteks alur Apigee dengan metode messageContext.setVariable()
. Untuk menampilkan kustom
informasi error, buat instance ExecutionResult
dan panggil metode di dalamnya untuk
mengatur respons kesalahan dan {i>header<i}.
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; } } }
Kompilasi kode Anda dengan Maven
Project 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 menginstal skrip Dependensi JAR di repo Maven lokal Anda. - ke direktori
java-error/callout
. - Jalankan Maven:
mvn clean package
- Jika Anda mau, verifikasi 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.
Men-deploy dan memanggil proxy
Skrip deploy disediakan di direktori ./java-error
. Tapi sebelum Anda menjalankannya,
Anda perlu melakukan
pengaturan cepat.
- cd ke
api-platform-samples/doc-samples/java-error
- Cara paling sederhana untuk men-deploy proxy adalah dengan memaketkannya dalam file zip dan mengupload proxy paket ke lingkungan di organisasi Apigee Anda. Lihat Membuat proxy API. Pastikan Anda menggunakan opsi Upload Proxy Bundle. Lihat juga Tips dan trik mengupload proxy API dalam paket proxy di komunitas Apigee.
- Saat proxy di-deploy, coba panggil proxy:
curl https://$HOSTNAME/java-error
Karena panggilan tidak menyertakan "nama" parameter kueri, kode Java akan menampilkan runtime {i>error<i}. Proxy menampilkan pesan dan header ini:
- Pesan error:
Please specify a name parameter!
- Tajuk:
ExceptionClass: java.lang.RuntimeException