Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Java çağrısı nedir?
Java çağrıları konusunda yeniyseniz Java çağrısı oluşturma başlıklı makaleyle başlamanızı öneririz.
Java çağrısındaki hataları işleme
Java çağrısı yazdığınızda Java kodunuzda özel hata işleme yapmak isteyebilirsiniz. Örneğin, Edge'deki proxy akışında özel hata mesajları ve üstbilgiler döndürmek ve/veya akış değişkenlerini hata bilgileriyle ayarlamak isteyebilirsiniz.
Temel özel hata işleme kalıplarını gösteren basit bir Java Callout örneğini inceleyelim. Örnek, bir istisna oluştuğunda özel bir hata mesajı döndürür. Ayrıca, hata yığını izlemeyi bir akış değişkenine yerleştirir. Bu, kullanışlı bir hata ayıklama tekniği olabilir.
Projeyi indirme
İşleri kolaylaştırmak için bu projeyi GitHub'daki Apigee api-platform-samples deposundan indirebilirsiniz.
- api-platform-samples'ı sisteminize indirin veya klonlayın.
- Seçtiğiniz bir terminalde veya kod düzenleyicide
api-platform-samples/doc-samples/java-errorprojesine gidin.
Örnek Java kodu
Hata işleme kalıpları basittir. messageContext.setVariable() yöntemini kullanarak akış değişkenlerini mevcut Edge akışı bağlamında ayarlayabilirsiniz. Özel hata bilgilerini döndürmek için bir ExecutionResult örneği oluşturun ve hata yanıtını ve üstbilgilerini ayarlamak için bu örnekte yöntemleri çağırın.
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; } } }
Kodunuzu Maven ile derleme
Proje, Maven ile derleme yapabileceğiniz şekilde ayarlanır. javac kullanmak istiyorsanız örnek de ekleriz.
- Maven'in yüklü olduğundan emin olun:
mvn -version
- Komut dosyasını çalıştırın
java-error/buildsetup.sh. Bu komut dosyası, gerekli JAR bağımlılıklarını yerel Maven deponuza yükler. java-error/calloutdizinine gidin.- Maven'i yürütün:
mvn clean package
- İsterseniz
edge-custom-policy-java-error.jarJAR dosyasınınjava-error/apiproxy/resources/javakonumuna kopyalandığını doğrulayın. Bu, bir proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.
javac ile derleme
Kodu derlemek için javac kullanmak istiyorsanız aşağıdaki gibi bir işlem yapabilirsiniz (java-error dizininden). Gerekli JAR dosyaları, java-error/lib dizininde sağlanır.
- cd
api-platform-samples/doc-samples/java-error - Yolunuzda javac olduğundan emin olun.
javac -version
- Aşağıdaki javac komutunu çalıştırın:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Proxy'yi dağıtma ve çağırma
./java-error dizininde bir dağıtım komut dosyası sağlanır. Ancak çalıştırmadan önce
hızlı bir kurulum yapmanız gerekir.
api-platform-samples/doc-samples/java-errordizinine gidin.- Henüz yapmadıysanız
../../setup/setenv.shdosyasını açın ve Apigee hesap bilgilerinizle (kullanıcı adınız, kuruluş adınız ve API yönetimi çağrıları yapmak için kullandığınız alan) belirtildiği şekilde düzenleyin. Örneğin, Edge Cloud için alanhttps://api.enterprise.apigee.comşeklindedir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir. setenv.shdosyasını kaydedin.- Dağıtım komut dosyasını yürütün:
./deploy.sh
- Dağıtım başarılı olursa invoke komut dosyasını çalıştırın:
./invoke.sh
Invoke komut dosyası, aşağıdaki gibi bir cURL komutu çağırır:
curl http://$org-$env.$api_domain/java-error
Çağrı bir "name" sorgu parametresi içermediğinden Java kodu bir çalışma zamanı hatası veriyor. Proxy, bu iletiyi ve üstbilgiyi döndürür:
- Hata mesajı:
Please specify a name parameter! - Başlık:
ExceptionClass: java.lang.RuntimeException