Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. 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 atarsa veya JavaCall politikası yürütülürken null değerini döndürürse ortaya çıkar.
Teşhis
Hatayı yakalamak ve hangi JavaCall politikasının başarısız olduğunu belirlemek için bir izleme oturumu başlatın.
JavaScript politikasını ve kullanılan kaynağı inceleyin. Yukarıdaki örnekte Java callout politikası, aşağıda gösterildiği gibi
hello.jar
adlı bir kaynak kullanır:<JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://hello.jar</ResourceURL> </JavaCallout>
Java açıklama metnindeki 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.
Etkilenen kaynağı (JAR dosyası) derleyin ve güncellenmiş Java yapısıyla değiştirin.
API Proxy'sini yeni bir düzeltme olarak dağıtın ve API çağrısı yapın.
Başka bir izleme oturumu başlatın.
JAVA_STACKTRACE
değişkeninde bir yığın izlemenin (stack trace) mevcut olduğuna dikkat edin. Yığın izleme, gerçek istisnayı ve hatanın bildirildiği Java kaynak dosyasını ve satır numarasını listeler.Java kodundaki sorunu düzeltmek için bu bilgileri kullanın.
Bu örnekte JavaCall politikası, 25 numaralı satırdaki
JavaError.java
dosyasındaki bir ArithmeticException (sıfıra bölme) nedeniyle başarısız olmuştur.
Çözünürlük
Atılan istisnaya bağlı olarak sorunu ilgili Java kaynak dosyalarında düzeltin. a. Yukarıda gösterilen örnekte sorunun nedeni aritmetik bir hatadır (sıfıra bölme). Yığın izlemede gösterilen ilgili kaynak dosyaya ve satır numarasına gidin.
b. Sıfıra bölme işlemi gerçekleştiremeyeceğinizden, sorunu çözmek için hatalı kod satırını içeren diğer tüm blokları kaldırın.
Değiştirilen dosyaları içeren ilgili JAR dosyasını, daha önce var olduğu yerde (API proxy'si, ortam veya kuruluş) değiştirin.
API proxy'sini yeni bir düzeltme olarak kaydedin ve dağıtın.