Attribute in einem Java-Callout verwenden

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.

  1. Laden Sie api-platform-samples in Ihr System herunter oder klonen Sie es.
  2. 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.

  1. Prüfen Sie, ob Maven installiert ist:
    mvn -version
  2. 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.
  3. cd in das java-properties/callout-Verzeichnis.
  4. Führen Sie Maven aus:
    mvn clean package
  5. Prüfen Sie bei Bedarf, ob die edge-custom-policy-java-properties.jar-JAR-Datei in java-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.

  1. cd in api-platform-samples/doc-samples/java-properties.
  2. Achten Sie darauf, dass Ihr Pfad javac enthält.

    javac -version
  3. 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
  4. JAR-Datei erstellen:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. 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.

  1. CD zu api-platform-samples/doc-samples/java-properties
  2. 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.
  3. 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 dem X-PROPERTY-HELLO-Namen fest:

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));