Pemecahan masalah error runtime kebijakan JavaCallout

Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat dokumentasi Apigee Edge.

ExecutionError

Kode Error

steps.javacallout.ExecutionError

Isi respons error

{
  "fault": {
    "faultstring": "Execution returned an error result",
    "detail": {
      "errorcode": "flow.execution.ExecutionReturnedFailure"
    }
  }
}

Penyebab

Error ini terjadi jika kode Java memunculkan pengecualian atau menampilkan null selama eksekusi kebijakan JavaCallout.

Diagnosis

  1. Mulai sesi rekaman aktivitas untuk merekam error dan mengidentifikasi kebijakan JavaCallout yang gagal.

  2. Periksa JavaCallout policy dan resource yang digunakan. Dalam contoh di atas, kebijakan JavaCallout menggunakan resource bernama hello.jar, seperti yang ditunjukkan di bawah:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Ambil dan simpan pengecualian Java dalam variabel alur dengan mengubah kode sumber, seperti yang dijelaskan dalam Menangani error dalam kebijakan JavaCallout.

  4. Kompilasi dan ganti resource yang terpengaruh (file JAR) dengan artefak Java yang telah diupdate.

  5. Deploy Proxy API sebagai revisi baru dan lakukan panggilan API.

  6. Mulai sesi rekaman aktivitas lainnya.

  7. Perhatikan bahwa stack trace tersedia dalam variabel JAVA_STACKTRACE. Stack trace mencantumkan pengecualian sebenarnya serta file sumber Java dan nomor baris tempat error terjadi.

  8. Gunakan informasi ini untuk memperbaiki masalah dalam kode Java.

  9. Dalam contoh ini, JavaCallout policy gagal karena ArithmeticException (pembagian dengan nol) dalam file JavaError.java di baris #25.

Resolusi

  1. Bergantung pada pengecualian yang terjadi, perbaiki masalah dalam file sumber Java yang relevan. a. Pada contoh yang ditunjukkan di atas, masalah disebabkan oleh kesalahan aritmatika (pembagian dengan nol). Buka file sumber dan nomor baris tertentu yang ditunjukkan oleh pelacakan tumpukan.

    b. Karena Anda tidak dapat melakukan pembagian dengan nol, hapus seluruh blok else yang berisi baris kode yang salah untuk menyelesaikan masalah.

  2. Ganti file JAR yang relevan yang berisi file yang diubah di tingkat yang sesuai (proxy API, lingkungan, atau organisasi), tempat file tersebut ada sebelumnya.

  3. Simpan dan deploy proxy API sebagai revisi baru.