JavaScript politikası çalışma zamanı hatasıyla ilgili sorunları giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Git: Apigee X belgeleri.
bilgi

ExecutionError

Hata Kodu

steps.javacallout.ExecutionError

Hata yanıtı gövdesi

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

Neden

Bu hata, Java kodu bir istisna yaparsa veya bir JavaAçıklama Politikası yürütülürken null döndürürse ortaya çıkar.

Teşhis

  1. Hatayı yakalamak ve hangi JavaAçıklama politikasının başarısız olduğunu belirlemek için bir izleme oturumu başlatın.

  2. JavaScript politikasını ve kullanılan kaynağı inceleyin. Yukarıdaki örnekte JavaAçıklama politikası, aşağıda gösterildiği gibi hello.jar adlı bir kaynağı kullanır:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Java çağrılarındaki hataları işleme bölümünde açıklandığı gibi, kaynak kodunu değiştirerek Java istisnasını bir akış değişkeninde yakalayın ve saklayın.

  4. Etkilenen kaynağı (JAR dosyası) derleyin ve güncellenmiş Java yapısıyla değiştirin.

  5. API Proxy'sini yeni bir düzeltme olarak dağıtın ve API çağrısını yapın.

  6. Başka bir izleme oturumu başlatın.

  7. JAVA_STACKTRACE değişkeninde bir yığın izlemenin (stack trace) bulunduğuna dikkat edin. Yığın izleme (stack trace), gerçek istisnayı ve hatanın bildirildiği Java kaynak dosyasını ve satır numarasını listeler.

  8. Java kodundaki sorunu düzeltmek için bu bilgilerden yararlanın.

  9. Bu örnekte, JavaAçıklama politikası, JavaError.java dosyasının 25. satırındaki bir ArithmeticException (sıfıra bölme) nedeniyle başarısız oldu.

Çözünürlük

  1. İstisnaya bağlı olarak, ilgili Java kaynak dosyalarında sorunu düzeltin. a. Yukarıdaki örnekte, sorun bir aritmetik hatadan (sıfıra bölme) kaynaklanmıştır. Yığın izleme tarafından belirtilen kaynak dosyaya ve satır numarasına gidin.

    b. Sıfıra bölme işlemi yapamadığınız için sorunu çözmek üzere hatalı kod satırını içeren else bloğunun tamamını kaldırın.

  2. Değiştirilen dosyaları içeren ilgili JAR dosyasını, daha önce bulunduğu uygun düzeyde (API proxy'si, ortam veya kuruluş) değiştirin.

  3. API proxy'sini yeni bir düzeltme olarak kaydedip dağıtın.