Come utilizzare le proprietà in un callout Java

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Che cos'è un callout Java?

Se non hai mai utilizzato i callout Java, ti consigliamo di iniziare con Come creare un callout Java.

Utilizzare le proprietà in un callout Java

Le proprietà consentono di specificare coppie nome/valore in un criterio di callout Java a cui puoi accedere dal tuo codice Java in fase di runtime. Devi specificare un valore stringa letterale per ogni proprietà; non puoi fare riferimento alle variabili di flusso in questo elemento.

Esaminiamo un semplice esempio di callout Java che utilizza le proprietà. In questo esempio, viene creato un proxy che include un criterio callout Java. Il criterio utilizza l'elemento <Properties> per specificare una coppia nome/valore. Nel codice Java, recuperiamo il valore e lo utilizziamo per impostare un'intestazione della risposta.

Scarica il progetto

Per semplificare le cose, puoi scaricare questo progetto dal repository api-platform-samples di Apigee su GitHub.

  1. Scarica o clona api-platform-samples sul tuo sistema.
  2. In un terminale o in un editor di codice a tua scelta, vai al progetto api-platform-samples/doc-samples/java-properties.

Le norme sui callout Java

Il criterio utilizza l'elemento <Properties>. Questo elemento consente di specificare coppie nome/valore. In fase di runtime, il tuo codice Java può accedere ai valori delle proprietà specificate nel criterio, come vedremo a breve.

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

Il codice Java di esempio

Il codice Java di questo esempio mostra come recuperare una proprietà specificata nel criterio callout Java. Nel progetto di esempio puoi trovare il codice sorgente in java-properties/callout/src/main/java/JavaProperties.java. La procedura per la compilazione e il deployment di questo codice verrà descritta più avanti in questo argomento.

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;
		}
	}
}

Compila il codice con Maven

Il progetto è configurato in modo da poter eseguire la compilazione con Maven. Se vuoi utilizzare javac, includeremo anche un esempio.

  1. Assicurati di avere installato Maven:
    mvn -version
    
  2. Esegui lo script java-properties/buildsetup.sh. Questo script installa le dipendenze JAR richieste nel repository Maven locale.
  3. cd nella directory java-properties/callout.
  4. Esegui Maven:
    mvn clean package
    
  5. Se vuoi, verifica che il file JAR edge-custom-policy-java-properties.jar sia stato copiato in java-properties/apiproxy/resources/java. Questa è la posizione obbligatoria per i file JAR di cui vuoi eseguire il deployment con un proxy.

Compilazione con javac (facoltativo)

Se vuoi utilizzare javac per compilare il codice, puoi eseguire una procedura simile a quella riportata di seguito (dalla directory java-properties). I file JAR richiesti sono forniti nella directory java-properties/lib.

  1. CD su api-platform-samples/doc-samples/java-properties.
  2. Assicurati che nel percorso sia presente javac.

    javac -version
    
  3. Esegui questo comando javac:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
    
  4. Crea un file JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. Copia il file JAR nella directory apiproxy/resources/java. Questa è la posizione obbligatoria per i file JAR di cui vuoi eseguire il deployment con un proxy.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java
    

Esegui il deployment e chiama il proxy

Nella directory ./java-properties è presente uno script di deployment. Ma prima di eseguirlo, devi eseguire una configurazione rapida.

  1. CD a api-platform-samples/doc-samples/java-properties
  2. Se non l'hai ancora fatto, apri il file ../../setup/setenv.sh e modificalo come indicato con i dati del tuo account Apigee: il tuo nome utente (l'indirizzo email associato al tuo account), il nome della tua organizzazione e il dominio che utilizzi per effettuare chiamate di gestione delle API. Ad esempio, per il cloud perimetrale, il dominio è https://api.enterprise.apigee.com; tuttavia, il dominio potrebbe essere diverso se utilizzi Edge Private Cloud.
  3. Salva il file setenv.sh.
  4. Esegui lo script di deployment:
    ./deploy.sh
    
  5. Se il deployment ha esito positivo, esegui lo script di chiamata:
    ./invoke.sh
    

    Lo script di chiamata chiama un comando cURL simile al seguente:

    curl  http://$org-$env.$api_domain/java-properties
    

    Il proxy restituisce l'intestazione: X-PROPERTY-HELLO: WORLD!. Ricorda che nel criterio è stata aggiunta una coppia nome/valore della proprietà "prop/WORLD!". Il callout Java recupera il valore "WORLD!" e lo imposta in un'intestazione denominata X-PROPERTY-HELLO:

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