Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Umożliwia wdrożenie niestandardowego zachowania w Javie, które nie jest dostępne od razu przez Zasady Apigee. Za pomocą kodu w Javie możesz uzyskać dostęp do właściwości wiadomości (nagłówków, parametrów zapytań, zawartości) i zmiennych przepływu w procesie serwera proxy. Jeśli dopiero zaczynasz korzystać z tych zasad, zobacz Jak utworzyć środowisko Java .
Informacje o obsługiwanych wersjach Javy znajdziesz w sekcji Obsługiwane wersje języka Java oprogramowania i obsługiwanych wersji.
Kiedy
Wskazówki znajdziesz w sekcji „Kiedy należy używać objaśnienia w Javie?” w artykule Jak utworzyć środowisko Java .
Informacje
Zasady dotyczące objaśnień w Javie pozwalają pobierać i ustawiać zmienne przepływu, wykonywać niestandardową logikę i wykonywać obsługi błędów, wyodrębniania danych z żądań lub odpowiedzi itp. Ta zasada umożliwia: zaimplementować niestandardowe zachowanie, którego nie obejmują inne standardowe zasady Edge.
Aplikację w Javie możesz spakować do dowolnego pakietu plików JAR. Notatka że są pewne ograniczenia dotyczące możliwości użycia objaśnień w Javie. Poniżej znajdziesz ich listę. w sekcji Ograniczenia.Przykłady
Prosty przykład
Jak utworzyć środowisko Java objaśnieniePobieranie właściwości w kodzie Java
Element <Property>
zasady umożliwia określenie nazwy/wartości
które można pobrać w trakcie działania za pomocą kodu w Javie. Oto działający przykład, w którym użyto funkcji
właściwości, zapoznaj się z artykułem Jak korzystać z właściwości
w objaśnieniu Java.
Używaj tagu <Właściwość> w atrybucie name
elementu, aby określić nazwę z
który uzyskuje dostęp do właściwości za pomocą kodu w Javie. Element <Property>
(wartość między tagiem otwierającym i zamykającym) to wartość otrzymana przez
w kodzie Java. Wartość musi być ciągiem znaków; nie możesz odwoływać się do zmiennej przepływu, aby uzyskać
.
- Skonfiguruj usługę. W tym przypadku wartością właściwości jest nazwa zmiennej
response.status.code
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <Properties> <Property name="source">response.status.code</Property> </Properties> </Javascript>
- W swoim kodzie Java zaimplementuj poniższy konstruktor w klasie Execution.
implementacji w następujący sposób:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
Ustawianie zmiennych przepływu w kodzie Java
Aby uzyskać jasny opis ustawiania zmiennych w kontekście wiadomości (zmienne przepływu) w kod w Javie znajdziesz w tym poście na stronie społeczności Apigee.
Odwołanie do elementu
Dokumentacja elementu opisuje elementy i atrybuty zasad JavaCallout.
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> atrybuty
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<ClassName> element
Określa nazwę klasy Java, która jest wykonywana po uruchomieniu zasady Java Callout.
klasa musi być uwzględniona w pliku JAR określonym w pliku <ResourceURL>
. Zobacz
także jak utworzyć w Javie
.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: | Ciąg znaków |
<Property> element
Określa właściwość, do której masz dostęp za pomocą kodu Java w czasie działania. Musisz podać literał ciąg znaków dla każdej właściwości; w tym elemencie nie można odwoływać się do zmiennych przepływu. Dla działającego przykładu, który korzysta z właściwości, zapoznaj się z artykułem Jak używać właściwości w tagu Objaśnienie Java.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
Domyślne: | Brak |
Obecność: | Opcjonalnie |
Typ: | Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
nazwa |
Określa nazwę właściwości. |
Nie dotyczy | Wymagane. |
<ResourceURL> element
Ten element określa plik Java JAR, który zostanie wykonany, gdy zasada dotycząca wywołań w Javie biegi.
Możesz zapisać ten plik w zakresie serwera proxy interfejsu API (w sekcji
/apiproxy/resources/java
w pakiecie serwerów proxy interfejsów API lub w sekcji Skrypty
w panelu Nawigator edytora serwera proxy interfejsu API) albo w zakresach organizacji lub środowisk do ponownego wykorzystania.
między wieloma serwerami proxy interfejsów API, jak opisano w sekcji Pliki zasobów.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
Domyślne: | Brak |
Obecność: | Wymagane |
Typ: | Ciąg znaków |
Informacje o błędzie
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | Występuje, gdy kod w Javie zgłasza wyjątek lub zwraca wartość null podczas wykonywania zasady JavaCallout. | build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego zasadę.
Nazwa błędu | Ciąg błędu | Stan HTTP | Występuje, gdy |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
Nie dotyczy | Plik określony w elemencie <ResourceURL> nie istnieje. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
Nie dotyczy | Pliku klasy określonego w elemencie <ClassName> nie ma w sekcji
jar. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
Nie dotyczy | Zobacz ciąg błędu. Zobacz też Obsługiwane oprogramowania i obsługiwanych wersji. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
Nie dotyczy | Zobacz ciąg błędu. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
Nie dotyczy | Zobacz ciąg błędu. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
Nie dotyczy | Zobacz ciąg błędu. |
NoResourceForURL |
Could not locate a resource with URL [string] |
Nie dotyczy | Zobacz ciąg błędu. |
Zmienne błędów
Te zmienne są ustawiane, gdy ta zasada wywołuje błąd. Więcej informacji znajdziesz w artykule Podstawowe informacje o błędach związanych z naruszeniem zasad.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | javacallout.JC-GetUserData.failed = true |
Przykładowa odpowiedź na błąd
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Przykładowa reguła błędu
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
Schematy
Kompilowanie i wdrażanie
Szczegółowe informacje o tym, jak skompilować niestandardowy kod w Javie i wdrożyć go za pomocą serwera proxy, znajdziesz w artykule Tworzenie kodu w Javie .
Ograniczenia
Poniżej znajdziesz ograniczenia, które musisz wziąć pod uwagę podczas tworzenia objaśnień w Javie:
- Większość wywołań systemowych jest zabroniona. Nie można na przykład wykonać odczytu wewnętrznego systemu plików lub pisze.
- Dostęp do sieci przez gniazda. Apigee ogranicza dostęp do witryn lokalnych, adresów typu loopback i linklocal.
- Objaśnienie nie może pobrać informacji o bieżącym procesie, liście procesów lub Wykorzystanie procesora/pamięci na komputerze. Niektóre wywołania mogą być prawidłowe, ale są nie są obsługiwane i mogą zostać wyłączone w dowolnym momencie. Aby zapewnić zgodność z wcześniejszymi funkcjami, należy unikać wykonywania takich połączeń w kodzie.
- Użycie bibliotek Java dołączonej do Apigee Edge nie jest obsługiwane. Te wartości służą wyłącznie do obsługi funkcji usługi Edge. Nie ma gwarancji, że biblioteka między kolejnymi wydaniami.
- Nie używaj
io.apigee
anicom.apigee
jako nazw pakietów w języku Java Objaśnienia. Te nazwy są zarezerwowane i używane przez inne moduły Apigee.
Sposób prezentacji
Umieść plik JAR w serwerze proxy interfejsu API w katalogu /resources/java
. Jeśli objaśnienie w Javie wymaga
w dodatkowych bibliotekach zewnętrznych spakowanych jako niezależne pliki JAR, a następnie umieszczać te pliki
w katalogu /resources/java
, aby upewnić się, że zostały prawidłowo załadowane
w środowisku wykonawczym.
Jeśli używasz interfejsu zarządzania do tworzenia lub modyfikowania serwera proxy, dodaj nowy zasób i
i określić dodatkowy zależny plik JAR. Jeśli istnieje wiele plików JAR, po prostu dodaj je jako
z dodatkowymi zasobami. Nie musisz zmieniać konfiguracji zasad, aby odwołać się do dodatkowych
pliki JAR. Wystarczy umieścić je w polu /resources/java
.
Informacje o przesyłaniu plików JAR w języku Java znajdziesz w sekcji Pliki zasobów.
Szczegółowy przykład pokazujący, jak spakować i wdrożyć objaśnienie Java za pomocą narzędzia Maven. lub javac., zobacz Jak utworzyć i objaśnienie Javy.
Javadoc
Plik Javadoc do tworzenia kodu objaśnienia w Javie znajduje się tutaj w GitHub. Musisz skopiować lub pobrać kod HTML do swojego systemu, a następnie otworzyć index.html w przeglądarce.
Zastosowanie
- Zasady dotyczące objaśnień w Javie nie zawierają rzeczywistego kodu. Zamiast tego zasada objaśnień w Javie odwołuje się do
„zasób” Java i definiuje krok w przepływie interfejsu API, w którym jest wykonywany kod w Javie. Dostępne opcje
prześlij plik Java JAR za pomocą edytora serwera proxy interfejsu zarządzania. Możesz też umieścić go w
Katalog
/resources/java
na serwerach proxy interfejsu API, które tworzysz lokalnie. - W przypadku prostych operacji, takich jak wywołania interfejsu API do usług zdalnych, zalecamy użycie funkcji Zasady dotyczące wywołań usługi. Zapoznaj się z zasadami dotyczącymi wywołań usługi.
- Do stosunkowo prostych interakcji z treścią wiadomości, takich jak modyfikowanie lub wyodrębnianie Nagłówki HTTP, parametry lub treść wiadomości, Apigee zaleca użycie zasady JavaScript.
Powiązane artykuły
- Powiązane przykłady znajdziesz na stronie java-cookbook .