Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Java çağrısı nedir?
Java açıklama metinleri konusunda yeniyseniz Java açıklama metni nasıl oluşturulur? başlıklı makaleyle başlamanızı öneririz.
Java Açıklama Metnindeki hataları işleme
Bir Java Çağrısı yazarken, 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 hata bilgileriyle akış değişkenleri ayarlamak isteyebilirsiniz.
Temel özel hata işleme kalıplarını gösteren basit bir Java Call örneğine göz atalım. Bir istisna oluştuğunda örnek, özel bir hata mesajı döndürür. Ayrıca, hata yığını izlemeyi bir akış değişkenine de 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 API'sini sisteminize indirin veya klonlayın.
- Seçtiğiniz bir terminal veya kod düzenleyicide
api-platform-samples/doc-samples/java-error
projesine gidin.
Örnek Java kodu
Hata işleme kalıpları basittir. messageContext.setVariable()
yöntemini kullanarak mevcut Edge akış bağlamında akış değişkenlerini ayarlayabilirsiniz. Özel hata bilgileri döndürmek için ExecutionResult
örneği oluşturun ve hata yanıtını ve üst bilgileri ayarlamak üzere bunun üzerinde yöntemler oluşturun.
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 derleyin
Proje, Maven ile derleyebileceğiniz şekilde ayarlanmıştır. javac
kullanmak istiyorsanız bir örnek de ekleyeceğiz.
- Maven'in yüklü olduğundan emin olun:
mvn -version
java-error/buildsetup.sh
komut dosyasını çalıştırın. Bu komut dosyası, yerel Maven deponuza gerekli JAR bağımlılıklarını yükler.- cd'den
java-error/callout
dizinine ekleyin. - Maven'i çalıştırın:
mvn clean package
- Dilerseniz
edge-custom-policy-java-error.jar
JAR dosyasınınjava-error/apiproxy/resources/java
konumuna kopyalandığını doğrulayın. Bu, 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ğıdakine benzer bir işlem yapabilirsiniz (java-error
dizininden). Gerekli JAR dosyaları java-error/lib
dizininde sağlanır.
- cd'den
api-platform-samples/doc-samples/java-error
öğesine dokunun. - Yolunuzda javac uzantısı bulunduğ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 gerekiyor.
- cd'den
api-platform-samples/doc-samples/java-error
konumuna - Henüz yapmadıysanız
../../setup/setenv.sh
dosyasını açın ve Apigee hesap bilgilerinizle (kullanıcı adınız (hesabınızla ilişkili e-posta adresi), kuruluş adınız ve API yönetimi çağrıları yapmak için kullandığınız alan) belirtilen şekilde düzenleyin. Örneğin, Edge bulutu için alanhttps://api.enterprise.apigee.com
'dir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir. setenv.sh
dosyasını kaydedin.- Dağıtım komut dosyasını yürütün:
./deploy.sh
- Dağıtım başarılı olursa çağırma komut dosyasını çalıştırın:
./invoke.sh
Çağrı komut dosyası, aşağıdakine benzer 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ı verir. Proxy şu iletiyi ve üstbilgiyi döndürür:
- Hata mesajı:
Please specify a name parameter!
- Başlık:
ExceptionClass: java.lang.RuntimeException