Cara menangani error Panggilan Java

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

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 pesan error khusus serta header dan/atau menetapkan variabel alur dengan informasi error dalam alur proxy di Apigee.

Mari kita pelajari contoh pemanggilan Java sederhana yang menggambarkan pola penanganan error kustom dasar. Contoh ini menampilkan pesan error khusus saat pengecualian terjadi. Alat 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.

  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-error.

Contoh kode Java

Pola penanganan error cukup mudah. Anda dapat menetapkan variabel alur dalam konteks alur Apigee saat ini dengan metode messageContext.setVariable(). Untuk menampilkan informasi error khusus, buat instance ExecutionResult dan panggil metode di dalamnya untuk menetapkan header dan respons 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;
        }
    }
}


Kompilasi kode Anda dengan Maven

Project ini sudah disiapkan sehingga Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan javac, kami juga akan menyertakan contoh.

  1. Pastikan Anda telah menginstal Maven:
    mvn -version
    
  2. Jalankan skrip java-error/buildsetup.sh. Skrip ini menginstal dependensi JAR yang diperlukan di repo Maven lokal Anda.
  3. {i>cd<i} ke direktori java-error/callout.
  4. Jalankan Maven:
    mvn clean package
    
  5. Jika mau, pastikan bahwa file JAR edge-custom-policy-java-error.jar telah disalin ke java-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. Namun, sebelum menjalankannya, Anda perlu melakukan penyiapan cepat.

  1. cd ke api-platform-samples/doc-samples/java-error
  2. Cara paling sederhana untuk menerapkan proxy adalah dengan memaketkannya dalam file zip dan mengupload paket proxy ke lingkungan di organisasi Apigee Anda. Lihat Membuat proxy API. Pastikan Anda menggunakan opsi Upload Proxy Bundle. Lihat juga Tips dan trik untuk mengupload proxy API dalam paket proxy di komunitas Apigee.
  3. Setelah proxy di-deploy, coba panggil proxy:
    curl  https://$HOSTNAME/java-error

    Karena panggilan tidak menyertakan parameter kueri "name", kode Java akan menampilkan error runtime. Proxy akan menampilkan pesan dan header ini:

  • Pesan error: Please specify a name parameter!
  • Header: ExceptionClass: java.lang.RuntimeException