Jak utworzyć objaśnienie w języku Java

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

Co to jest objaśnienie w Javie?

Apigee Edge udostępnia szereg zasad, które spełniają typowe wymagania dotyczące zarządzania interfejsami API, takie jak m.in. bezpieczeństwo, transformację danych czy zarządzanie ruchem.

Istnieją jednak przypadki, gdy interfejs API wymaga niestandardowego działania, które nie jest zaimplementowane w ramach standardowych zasad. W takich przypadkach Apigee udostępnia kilka opcji, które umożliwiają tworzenie skryptów lub niestandardowe zachowanie interfejsu API. Jedną z metod jest wdrożenie oczekiwanego zachowania w języku Java.

Informacje o obsługiwanych wersjach Javy znajdziesz w sekcji Obsługiwane wersje języka Java oprogramowania i obsługiwanych wersji.

Jak używać kodu w Javie na serwerze proxy?

Zasada wywołań Java umożliwia wywoływanie kodu w Javie z poziomu wykonywanego przepływu serwera proxy. Twoja Jawa musi implementować określone specyficzne dla Edge interfejsy Java, które umożliwiają interakcję. z używanym serwerem proxy. Istnieją np. metody w Javie służące do pobierania i ustawiania nagłówków, , oraz zmienne przepływu i inne elementy w bieżącym kontekście przepływu serwera proxy.

Kiedy należy używać wywołań w Javie?

Przyjrzyjmy się sytuacjom, w których przydatne są objaśnienia w Javie, oraz sytuacjom, w których rozważać inne rozwiązania.

Po pierwsze, podejścia alternatywne

Zanim użyjesz objaśnienia w Javie, pamiętaj, że mogą być dostępne alternatywne podejścia, . Na przykład:

  • W przypadku prostych operacji, takich jak wywołania interfejsu API HTTP do usług zdalnych, rozważ użycie 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łówków HTTP, parametrów lub treści wiadomości, możesz użyć języków JavaScript lub Pythona.

Co można robić w kodzie Java

Objaśnienie w Javie obsługuje te podstawowe operacje:

  • Badanie wiadomości z prośbami lub odpowiedziami i manipulowanie nimi
  • Uzyskiwanie i ustawianie zmiennych przepływu. Aby uzyskać dostęp do zmiennych przepływu brzegowego, możesz używać metod w Javie. Jeśli chcesz uzyskać dostęp do informacji o mapie klucz-wartość, użyj zasad KVM przypisać wartości KVM do zmiennych przepływu, a potem uzyskać dostęp do zmiennych przepływu z poziomu w objaśnieniu Java.
  • Nawiązywanie połączeń z usługami zewnętrznymi
  • Wzrosty błędów
  • Manipulowanie komunikatami o błędach i kodami stanu

Czego nie można robić w Javie kod

Większość wywołań systemowych jest zabroniona. Nie możesz:

  • Wykonuj odczyty lub zapisy w wewnętrznym systemie plików. Oznacza to, że nie możesz używać żadnej pakiety Javy do odczytu i zapisu w wewnętrznych systemach plików; możesz jednak zmienić adres URL zdalnych wywołań.
  • Pobieranie informacji o bieżącym procesie, liście procesów lub wykorzystaniu procesora/pamięci na komputerze.
  • Uzyskaj dostęp do kodu źródłowego w plikach „expressions-1.0.0.jar” i „message-flow-1.0.0.jar”.

Chociaż niektóre tego typu połączenia mogą działać, nie są one obsługiwane i mogą zostać aktywnie wyłączone na w dowolnym momencie. Unikaj wykonywania takich połączeń w kodzie.

Nie używaj bibliotek Javy zawartych w Apigee Edge ani nie korzystaj z nich. Te biblioteki są dotyczy tylko funkcji usługi Edge i nie ma gwarancji, że biblioteka będzie dostępna. między wydaniami. Jeśli używasz takich bibliotek, użyj ich w demonstracjach nieprodukcyjnych

Objaśnienie Hello Java

Przyjrzyjmy się podstawowym przykładowi objaśnienia w Javie w języku Hello World. W tym przykładzie tworzymy prosty serwer proxy z wywołaniem Java, które zwraca „hello world” . Serwer proxy może zwrócić jeden z dwóch możliwych odpowiedzi:

  • Jeśli podasz „nazwę użytkownika” nagłówek z „name” serwer proxy zwraca:

    Hello, <name>!
    
  • Jeśli pominiesz nagłówek, serwer proxy zwróci jedynie:

    "Hello, Guest!"
    

Pobierz projekt startowy

Aby ułatwić Ci zadanie, mamy dla Ciebie podstawowy projekt na GitHubie przygotowany w Apigee. api-platform-samples.

  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-hello projekt.

Napisanie kodu w Javie

  1. Otwórz plik źródłowy Javy: java-hello/callout/src/main/java/HelloJava.java. Ten plik jest szkieletową wersją głównej klasy Java, którą wdrożymy. Zaimportowane W przypadku kodu objaśnienia Edge w języku Java wymagane są pakiety. Te klasy oferują metody, które umożliwiają: aby uzyskać dostęp do kontekstu wykonywania serwera proxy. Poniżej omawiamy etapy kompilowania i wdrażania wkrótce ten kod.
    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;
    
    
    public class HelloJava implements Execution {
    
            public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
                    
                    try {
    
                            // Your code here.
                
                return ExecutionResult.SUCCESS;
    
                    } catch (Exception e) {
                            return ExecutionResult.ABORT;
                    }
            }
    
    }
    
  2. Zastąp komentowany wiersz // Your code here tym kodem:

    String name = messageContext.getMessage().getHeader("username");
    
    if (name != null && name.length()>0) {
            messageContext.getMessage().setContent("Hello, " + name + "!");
            messageContext.getMessage().removeHeader("username");
    } else {
            messageContext.getMessage().setContent("Hello, Guest!");
    }
    
  3. Zapisz plik.


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, uwzględnimy przykład zgodny z przykładem Maven.

  1. Sprawdź, czy masz zainstalowaną aplikację Maven:

    mvn -version
    
  2. Uruchom skrypt java-hello/buildsetup.sh. Ten skrypt instaluje wymagane Zależności JAR w lokalnym repozytorium Maven.
  3. cd do katalogu java-hello/callout.
  4. Uruchom narzędzie Maven:

    mvn clean package
    
  5. Jeśli chcesz, sprawdź, czy plik JAR edge-custom-policy-java-hello.jar został skopiowano do folderu java-hello/apiproxy/resources/java. Ta lokalizacja jest wymagana dla: Pliki JAR, które chcesz wdrożyć za pomocą serwera proxy.

Kompilowanie za pomocą biblioteki javac (opcjonalnie)

W poprzedniej sekcji automatycznie wygenerujesz wymagany plik Java JAR za pomocą Polecenie Maven. Jeśli chcesz skompilować kod za pomocą narzędzia javac, możesz może wyglądać mniej więcej tak (z katalogu java-hello). Wymagane Pliki JAR znajdziesz w katalogu java-hello/lib.

  1. CD do api-platform-samples/doc-samples/java-hello.
  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/HelloJava.java
    
    Powstanie w ten sposób: com/apigeesample/HelloJava.class.
  4. Utwórz plik JAR zawierający skompilowaną klasę w Katalog apiproxy/resources/java. Ta lokalizacja jest wymagana w przypadku pliku JAR które chcesz wdrożyć za pomocą serwera proxy. Aby to zrobić, uruchom następujące polecenie w katalogu java-hello (nie zapomnij kropki na końcu).

    jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
    

Wdróż i wywołaj serwer proxy

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

  1. CD: api-platform-samples/doc-samples/java-hello
  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, wykonaj skrypt wywoływania:

    ./invoke.sh
    

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

    curl  http://$org-$env.$api_domain/java-hello -H "username:Will"
    

    który zwraca „Hello, Will!

    Możesz edytować skrypt invoke.sh, aby zmienić nazwę lub cURL, by usunąć nagłówek, po czym to polecenie zwraca „Cześć, gość!”.

Informacje o serwerze proxy

Przyjrzyjmy się szybko zasadom używanym na tym serwerze proxy. Sprawdź, gdzie znajdują się zasady jaka jest Twoja pozycja w przepływie serwera proxy i dlaczego.

Zasady przypisywania wiadomości

Zasada Przypisz wiadomości jest dołączona do procesu żądania ProxyEndpoint. it kopiuje nagłówek nazwy użytkownika z żądania i przypisuje go do odpowiedzi. Ta operacja umożliwia zasady Java Callout, która jest dołączana do procesu odpowiedzi, aby uzyskać dostęp do nagłówka nazwy użytkownika i utworzyć niestandardową treść odpowiedzi na podstawie wartości tego nagłówka.

<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader">     
    <DisplayName>CopyHeader</DisplayName>     
    <Copy source="request">         
        <Headers>             
          <Header name="username"/>         
        </Headers>     
    </Copy>     
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>     
    <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

Zasady dotyczące wywołań języka Java

Zasada dotycząca objaśnień w języku Java jest dołączona do przepływu odpowiedzi. To dlatego, że niestandardowy kod w Javie zmienia nagłówki odpowiedzi i komunikaty. ClassName zasady określa klasę główną wykonywaną przez zasadę. Element ResourceURL to element nazwę utworzonego i dodanego do katalogu resources/java pliku JAR serwera proxy.

<JavaCallout name="hello-java">         
    <ClassName>com.apigeesample.HelloJava</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> 
</JavaCallout>

Co musisz wiedzieć o objaśnieniu w języku Java

Ważne informacje o implementowaniu wywołań w języku Java:

  • Importuje zajęcia z: com.apigee.flow.execution i Liczba pakietów: com.apigee.flow.message. Te pakiety muszą być uwzględnione w pliku JAR spakowane i wdrożone. Możesz przesłać plik Java JAR za pomocą serwera proxy interfejsu zarządzania lub umieścić go w katalogu /resources/java na serwerach proxy API, które tworzysz lokalnie.
  • Implementuje interfejs wykonania. Każdy kod w Javie wykonywany w obrębie serwera proxy interfejsu API musi zaimplementować Wykonanie.
  • 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, który należy spakować w pliku JAR.
  • Nazwy pakietów, których należy unikać: nie używaj io.apigee ani com.apigee jako nazwy pakietów w objaśnieniach Java. Są one zarezerwowane i używane przez z innymi modułami Apigee.
  • Jeśli objaśnienie w Javie korzysta z dodatkowych bibliotek innych firm spakowanych jako niezależne pliki JAR pliki JAR, a następnie umieść je w katalogu /resources/java aby upewnić się, że są prawidłowo wczytywane w czasie działania.
  • Jeśli istnieje wiele plików JAR, po prostu dodaj je jako dodatkowe zasoby. Nie musisz tego robić zmienić konfigurację zasad, aby odwoływać się do dodatkowych plików JAR. Dodaję Wystarczy /resources/java.
  • Więcej informacji o przesyłaniu plików JAR w języku Java znajdziesz w artykule Pliki zasobów.