Jak radzić sobie z błędami dotyczącymi kodu Java

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Co to jest objaśnienie w Javie?

Jeśli dopiero zaczynasz korzystać z objaśnień w języku Java, najlepiej zacznij od przeczytania artykułu o tworzeniu w języku Java: .

Postępowanie w przypadku błędów w objaśnieniu Java

Podczas pisania objaśnienia w Javie warto zastosować niestandardową obsługę błędów w kodzie Java. Dla: Na przykład można zwracać niestandardowe komunikaty o błędach i nagłówki lub ustawić zmienne przepływu za pomocą funkcji w procesie proxy w Edge.

Przyjrzyjmy się prostemu przykładowi objaśnienia w Javie, które ilustruje podstawową obsługę niestandardowych błędów. wzorów. Przykład zwraca niestandardowy komunikat o błędzie po wystąpieniu wyjątku. Umieszcza ona również ślad stosu błędów do zmiennej przepływu, co może być przydatną techniką debugowania.

Pobierz projekt

Dla ułatwienia możesz pobrać ten projekt z repozytorium Apigee api-platform-samples w witrynie GitHub.

  1. Pobierz lub skopiuj do systemu plik api-platform-samples.
  2. W wybranym terminalu lub edytorze kodu otwórz api-platform-samples/doc-samples/java-error projekt.

Przykładowy kod w Javie

Wzorce postępowania z błędami są proste. Zmienne przepływu możesz ustawić w bieżącej Kontekst przepływu brzegowego z metodą messageContext.setVariable(). Aby zwrócić niestandardowe informacji o błędzie, utwórz instancję ExecutionResult i wywołaj na niej metody ustaw odpowiedź z komunikatem o błędzie i nagłówki.

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;
        }
    }
}


Kompilowanie kodu w narzędziu Maven

Projekt jest skonfigurowany tak, że możesz kompilować je w narzędziu Maven. Jeśli chcesz użyć funkcji javac, podamy również przykład.

  1. Sprawdź, czy masz zainstalowaną aplikację Maven:
    mvn -version
    
  2. Uruchom skrypt java-error/buildsetup.sh. Ten skrypt instaluje wymagane Zależności JAR w lokalnym repozytorium Maven.
  3. cd do katalogu java-error/callout.
  4. Uruchom narzędzie Maven:
    mvn clean package
    
  5. Jeśli chcesz, sprawdź, czy plik JAR edge-custom-policy-java-error.jar został skopiowano do folderu java-error/apiproxy/resources/java. Ta lokalizacja jest wymagana dla: Pliki JAR, które chcesz wdrożyć za pomocą serwera proxy.

Kompilowanie za pomocą biblioteki javac

Jeśli do skompilowania kodu chcesz użyć narzędzia javac, możesz zrobić coś podobnego (z katalogu java-error). Wymagane pliki JAR są udostępnione dla Cię w katalogu java-error/lib.

  1. CD do api-platform-samples/doc-samples/java-error.
  2. Upewnij się, że ścieżka zawiera bibliotekę javac.

    javac -version
    
  3. Uruchom to polecenie javac:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
    
  4. Skopiuj plik JAR do katalogu apiproxy/resources/java. To jest wymagana lokalizacja w przypadku plików JAR, które chcesz wdrożyć za pomocą serwera proxy.

    cp com/apigeesample/JavaProperties.class apiproxy/resources/java
    

Wdróż i wywołaj serwer proxy

Skrypt wdrażania jest dostępny w katalogu ./java-error. Ale zanim go uruchomisz, musisz przeprowadzić szybką konfigurację.

  1. CD: api-platform-samples/doc-samples/java-error
  2. Otwórz plik ../../setup/setenv.sh i zmodyfikuj go (jeśli jeszcze nie jest otwarty). – zgodnie z informacjami o koncie Apigee: Twoja nazwa użytkownika (adres e-mail) powiązane z Twoim kontem), nazwę organizacji oraz domenę, której używasz do tworzenia interfejsu API rozmów z menedżerem. Na przykład w przypadku Edge Cloud domena to https://api.enterprise.apigee.com; Twoja domena może być jednak inna, jeśli przy użyciu Edge Private Cloud.
  3. Zapisz plik setenv.sh.
  4. Uruchom skrypt wdrażania:
    ./deploy.sh
    
  5. Jeśli wdrożenie się powiedzie, uruchom skrypt wywołujący:
    ./invoke.sh
    

    Skrypt wywołujący wywołuje polecenie cURL, które wygląda tak:

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

    Ponieważ połączenie nie zawiera „nazwy”. zapytania, kod w Javie zgłasza środowisko wykonawcze . Serwer proxy zwraca ten komunikat i nagłówek:

  • Komunikat o błędzie: Please specify a name parameter!
  • Nagłówek: ExceptionClass: java.lang.RuntimeException
.