Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Was ist ein Java-Callout?
Wenn Sie noch nicht mit Java-Callouts vertraut sind, sollten Sie mit dem Erstellen einer Java-Erweiterung beginnen.
Attribute in einem Java-Callout verwenden
Mit Attributen können Sie Namen/Wert-Paare in einer Java-Callout-Richtlinie angeben, auf die Sie von Ihrem Java-Code zur Laufzeit zugreifen können. Sie müssen für jedes Attribut einen literalen Stringwert angeben. Sie können in diesem Element nicht auf Ablaufvariablen verweisen.
Im Folgenden finden Sie ein einfaches Java-Callout-Beispiel, das Attribute verwendet. In diesem Beispiel erstellen wir einen Proxy mit einer Java-Callout-Richtlinie. Die Richtlinie verwendet das <Properties>
-Element, um ein Name/Wert-Paar anzugeben. Im Java-Code rufen wir den Wert ab und verwenden ihn zum Festlegen eines Antwort-Headers.
Projekt herunterladen
Sie können dieses Projekt aus dem Apigee-Repository api-platform-samples auf GitHub herunterladen.
- Laden Sie api-platform-samples in Ihr System herunter oder klonen Sie es.
- Wechseln Sie in einem Terminal oder Codeeditor Ihrer Wahl zum
api-platform-samples/doc-samples/java-properties
-Projekt.
Java-Callout-Richtlinie
Die Richtlinie verwendet das <Properties>
-Element. Mit diesem Element können Sie Name/Wert-Paare angeben. Zur Laufzeit kann Ihr Java-Code auf die Werte der in der Richtlinie angegebenen Attribute zugreifen, wie wir gleich sehen werden.
<JavaCallout name="java-callout"> <ClassName>com.apigeesample.JavaProperties</ClassName> <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL> <Properties> <Property name="prop">WORLD!</Property> </Properties> </JavaCallout>
Java-Beispielcode
Der Java-Code für dieses Beispiel zeigt, wie Sie eine Eigenschaft abrufen, die in der Java-Callout-Richtlinie angegeben ist. Im Beispielprojekt finden Sie den Quellcode in java-properties/callout/src/main/java/JavaProperties.java
. Die Schritte zum Kompilieren und Bereitstellen dieses Codes werden später in diesem Thema beschrieben.
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 java.util.Map; public class JavaProperties implements Execution { private Map <String,String> properties; // read-only public JavaProperties(Map <String,String> properties) { this.properties = properties; } public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop")); return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
Code mit Maven kompilieren
Das Projekt ist so eingerichtet, dass Sie es mit Maven kompilieren können. Wenn Sie javac
verwenden möchten, fügen wir außerdem ein Beispiel hinzu.
- Prüfen Sie, ob Maven installiert ist:
mvn -version
- Führen Sie das
java-properties/buildsetup.sh
-Skript aus: Mit diesem Skript werden die erforderlichen JAR-Abhängigkeiten in Ihrem lokalen Maven-Repository installiert. - cd in das
java-properties/callout
-Verzeichnis. - Führen Sie Maven aus:
mvn clean package
- Prüfen Sie bei Bedarf, ob die
edge-custom-policy-java-properties.jar
-JAR-Datei injava-properties/apiproxy/resources/java
kopiert wurde. Dies ist der erforderliche Speicherort für JAR-Dateien, die Sie mit einem Proxy bereitstellen möchten.
Mit Javac komplieren (optional)
Wenn Sie javac
verwenden möchten, um den Code zu kompilieren, können Sie beispielsweise Folgendes ausführen (aus dem java-properties
-Verzeichnis). Die erforderlichen JAR-Dateien werden im java-properties/lib
-Verzeichnis für Sie bereitgestellt.
- cd in
api-platform-samples/doc-samples/java-properties
. - Achten Sie darauf, dass Ihr Pfad javac enthält.
javac -version
- Führen Sie den folgenden javac-Befehl aus:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- JAR-Datei erstellen:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
- Kopieren Sie die JAR-Datei in das Verzeichnis apiproxy/resources/java. Dies ist der erforderliche Speicherort für JAR-Dateien, die Sie mit einem Proxy bereitstellen möchten.
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
Proxy bereitstellen und aufrufen
Ein Bereitstellungsskript wird im ./java-properties
-Verzeichnis bereitgestellt. Bevor Sie es ausführen, müssen Sie jedoch eine schnelle Einrichtung vornehmen.
- CD zu
api-platform-samples/doc-samples/java-properties
- Die einfachste Methode zum Bereitstellen des Proxys besteht darin, ihn in einer ZIP-Datei zu bündeln und das Proxy-Bundle in eine Umgebung in Ihrer Apigee-Organisation hochzuladen. Siehe API-Proxy erstellen. Verwenden Sie unbedingt die Option Proxyproxy hochladen. Weitere Informationen finden Sie auch unter Tipps und Tricks zum Hochladen eines API-Proxys in einem Proxy-Bundle in der Apigee-Community.
- Wenn der Proxy bereitgestellt ist, versuchen Sie, ihn aufzurufen:
curl https://$HOSTNAME/java-properties
Der Proxy gibt den
X-PROPERTY-HELLO: WORLD!
-Header zurück. Beachten Sie, dass in der Richtlinie ein Attribut-Name/Wert-Paar"prop/WORLD!"
hinzugefügt wurde. Das Java-Callout ruft den"WORLD!"
-Wert ab und legt es in einem Header mit demX-PROPERTY-HELLO
-Namen fest:messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));