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

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.

  1. api-platform-samples API'sini sisteminize indirin veya klonlayın.
  2. 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.

  1. Maven'in yüklü olduğundan emin olun:
    mvn -version
    
  2. 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.
  3. cd'den java-error/callout dizinine ekleyin.
  4. Maven'i çalıştırın:
    mvn clean package
    
  5. Dilerseniz edge-custom-policy-java-error.jar JAR dosyasının java-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.

  1. cd'den api-platform-samples/doc-samples/java-error öğesine dokunun.
  2. Yolunuzda javac uzantısı bulunduğundan emin olun.

    javac -version
    
  3. 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
    
  4. 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.

  1. cd'den api-platform-samples/doc-samples/java-error konumuna
  2. 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 alan https://api.enterprise.apigee.com'dir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir.
  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ğı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