Zasady dotyczące objaśnienia Java

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śnienie
.

Pobieranie 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>

&lt;JavaCallout&gt; 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 name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; 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 name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;ClassName&gt; 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

&lt;Property&gt; 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.

&lt;ResourceURL&gt; 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.

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 ani com.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