Java Açıklama Metni hatalarını işleme

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

Java çağrısı nedir?

Java açıklama metinleri konusunda yeniyseniz Java açıklama metinleri nasıl oluşturulur? açıklama metni).

Java Açıklama Metnindeki hataları işleme

Bir Java Çağrısı yazdığınızda, Java kodunuzda özel hata işlemeyi gerçekleştirmek isteyebilirsiniz. Örneğin, özel hata mesajları ve başlıkları döndürebilir ve/veya veya Edge'deki proxy akışında gösterilen hata bilgileri.

Temel özel hata işleme sürecini gösteren basit bir Java Açıklama Metni örneğinden belirler. Bir istisna oluştuğunda örnek özel bir hata mesajı döndürür. Aynı zamanda akış değişkenine aktarmanızı sağlar. Bu, kullanışlı bir hata ayıklama tekniği olabilir.

Projeyi indirme

İşleri kolaylaştırmak için bu projeyi aşağıdaki Apigee api-platform-samples deposundan indirebilirsiniz: GitHub.

  1. api-platform-samples öğesini sisteminize indirin veya klonlayın.
  2. Tercih ettiğiniz bir terminalde veya kod düzenleyicide api-platform-samples/doc-samples/java-error projesi.

Örnek Java kodu

Hata giderme kalıpları basittir. Akış değişkenlerini messageContext.setVariable() yöntemiyle uç akış bağlamı. Özel değeri döndürmek için hata bilgileri oluşturmak için bir ExecutionResult örneği oluşturun ve ve başlıkları ayarlayı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 derleyin

Proje, Maven ile derleyebileceğiniz şekilde ayarlanmıştır. Raporlarınızda javac, bir örnek de ekleriz.

  1. Maven'in yüklü olduğundan emin olun:
    mvn -version
    
    .
  2. java-error/buildsetup.sh komut dosyasını yürütün. Bu komut dosyası, gerekli dosyayı JAR bağımlılarını yerel Maven depolarına taşıyın.
  3. cd'yi java-error/callout dizinine ekleyin.
  4. Maven'i yürütme:
    mvn clean package
    
    .
  5. İsterseniz edge-custom-policy-java-error.jar JAR dosyasının şuydu olduğunu doğrulayın: java-error/apiproxy/resources/java klasörüne kopyalandı. Bu, Proxy ile dağıtmak istediğiniz JAR dosyaları.

Javac ile derle

Kodu derlemek için javac kullanmak isterseniz şuna benzer bir işlem yapabilirsiniz: (java-error dizininden). Gerekli JAR dosyaları şunun için sağlanmıştır: sizi java-error/lib dizininde bulabilirsiniz.

  1. cd'yi api-platform-samples/doc-samples/java-error konumuna ekleyin.
  2. Yolunuzda javac bulunduğundan emin olun.

    javac -version
    
  3. Aşağıdaki javac komutunu yürütün:

    .
    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
    
  4. JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, gerekli konumdur proxy ile dağıtmak istediğiniz JAR dosyaları içindir.

    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ğlandı. Ama çalıştırmadan önce hızlı bir kurulum yapmanız gerekir.

  1. cd'den api-platform-samples/doc-samples/java-error'ye
  2. Henüz yapmadıysanız ../../setup/setenv.sh dosyasını açın ve düzenleyin Apigee hesap bilgilerinizle birlikte belirtildiği gibi: kullanıcı adınız (e-posta adresi hesabınızla ilişkilendirilen), kuruluşunuzun adı ve API oluşturmak için kullandığınız alan adı yönetim çağrıları. Örneğin, Edge Cloud için alan https://api.enterprise.apigee.com; ancak dilerseniz kullanarak giriş yapın.
  3. setenv.sh dosyasını kaydedin.
  4. Dağıtım komut dosyasını yürütün:
    ./deploy.sh
    
    .
  5. Dağıtım başarılı olursa çağrı komut dosyasını yürütün:
    ./invoke.sh
    
    .

    Çağrı komut dosyası şuna benzer bir cURL komutu çağırır:

    curl  http://$org-$env.$api_domain/java-error
    

    Çağrı "ad" içermediğinden sorgu parametresinde, Java kodu bir hatası. Proxy şu mesajı ve üstbilgiyi döndürür:

  • Hata mesajı: Please specify a name parameter!
  • Başlık: ExceptionClass: java.lang.RuntimeException
ziyaret edin.