Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Co to jest wywołanie Java?
Jeśli nie masz doświadczenia z wywołaniami Java, zacznij od artykułu Tworzenie wywołania Java callout.
Obsługa błędów w wywołaniu Java
Podczas pisania wywołania Java możesz chcieć zaimplementować niestandardową obsługę błędów w kodzie Java. Możesz na przykład chcieć zwracać niestandardowe komunikaty o błędach i nagłówki lub ustawiać zmienne przepływu z informacjami o błędach w przepływie proxy w Edge.
Przyjrzyjmy się prostemu przykładowi wywołania Java, który ilustruje podstawowe wzorce niestandardowej obsługi błędów. Gdy wystąpi wyjątek, przykład zwraca niestandardowy komunikat o błędzie. Umieszcza też ślad stosu błędu w zmiennej przepływu, co może być przydatną techniką debugowania.
Pobieranie projektu
Aby uprościć sprawę, możesz pobrać ten projekt z repozytorium Apigee api-platform-samples w GitHub.
- Pobierz lub sklonuj api-platform-samples na swój komputer.
- W terminalu lub wybranym edytorze kodu przejdź do projektu
api-platform-samples/doc-samples/java-error.
Przykładowy kod Java
Wzorce obsługi błędów są proste. Zmienne przepływu możesz ustawić w bieżącym
kontekście przepływu Edge za pomocą metody messageContext.setVariable(). Aby zwrócić niestandardowe
informacje o błędzie, utwórz instancję ExecutionResult i wywołaj jej metody, aby
ustawić odpowiedź i nagłówki błędu.
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 za pomocą Maven
Projekt jest skonfigurowany tak, aby można go było skompilować za pomocą Maven. Jeśli chcesz użyć
javac, podamy też przykład.
- Upewnij się, że masz zainstalowany Maven:
mvn -version
- Uruchom skrypt
java-error/buildsetup.sh. Ten skrypt instaluje wymagane zależności JAR w lokalnym repozytorium Maven. - Przejdź do katalogu
java-error/callout. - Uruchom Maven:
mvn clean package
- Jeśli chcesz, sprawdź, czy plik JAR
edge-custom-policy-java-error.jarzostał skopiowany dojava-error/apiproxy/resources/java. Jest to wymagana lokalizacja dla plików JAR, które chcesz wdrożyć za pomocą proxy.
Kompilowanie za pomocą javac
Jeśli chcesz skompilować kod za pomocą javac, możesz zrobić coś podobnego do tego (z katalogu java-error). Wymagane pliki JAR są dostępne dla
Ciebie w katalogu java-error/lib.
- Przejdź do
api-platform-samples/doc-samples/java-error. - Upewnij się, że masz javac w ścieżce.
javac -version
- 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
- Skopiuj plik JAR do katalogu apiproxy/resources/java. Jest to wymagana lokalizacja
dla plików JAR, które chcesz wdrożyć za pomocą proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Wdrażanie i wywoływanie proxy
W katalogu ./java-error znajduje się skrypt wdrożenia. Zanim go uruchomisz,
musisz przeprowadzić szybką konfigurację.
- Przejdź do
api-platform-samples/doc-samples/java-error. - Jeśli jeszcze tego nie zrobisz, otwórz plik
../../setup/setenv.shi edytuj go zgodnie z informacjami o koncie Apigee: nazwą użytkownika (adresem e-mail powiązanym z kontem), nazwą organizacji i domeną, której używasz do wykonywania wywołań zarządzania interfejsami API. Na przykład w przypadku chmury Edge domena tohttps://api.enterprise.apigee.com. Jeśli jednak używasz Edge Private Cloud, domena może być inna. - Zapisz plik
setenv.sh. - Uruchom skrypt wdrożenia:
./deploy.sh
- Jeśli wdrożenie się powiedzie, uruchom skrypt wywołania:
./invoke.sh
Skrypt wywołania wywołuje polecenie cURL, które wygląda tak:
curl http://$org-$env.$api_domain/java-error
Ponieważ wywołanie nie zawiera parametru zapytania „name”, kod Java zgłasza błąd wykonania. Proxy zwraca ten komunikat i nagłówek:
- Komunikat o błędzie:
Please specify a name parameter! - Nagłówek:
ExceptionClass: java.lang.RuntimeException