Como usar propriedades em uma chamada de Java

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

O que é uma frase de destaque do Java?

Se você é iniciante nas chamadas do Java, comece com Como criar uma frase de destaque Java.

Como usar propriedades em uma frase de destaque do Java

As propriedades permitem especificar pares de nome/valor em uma política de frase de destaque Java que pode ser acessada a partir do seu código Java no ambiente de execução. Você precisa especificar um valor de string literal para cada propriedade. Não é possível referenciar variáveis de fluxo neste elemento.

Veja um exemplo simples de chamada Java que usa propriedades. Neste exemplo, criamos um proxy com uma política de frase de destaque Java. A política usa o elemento <Properties> para especificar um par de nome/valor. No código Java, recuperamos o valor e o usamos para definir um cabeçalho de resposta.

Fazer o download do projeto

Para simplificar, faça o download deste projeto do repositório api-platform-samples da Apigee no GitHub.

  1. Faça o download ou clone api-platform-samples no seu sistema.
  2. Em um terminal ou editor de código de sua escolha, acesse o projeto api-platform-samples/doc-samples/java-properties.

Política de chamadas do Java

A política usa o elemento <Properties>. Esse elemento permite especificar pares de nome/valor. No ambiente de execução, seu código Java pode acessar os valores das propriedades especificadas na política, como veremos em 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>

A amostra de código Java

O código Java dessa amostra mostra como recuperar uma propriedade que foi especificada na política de frase de destaque Java. No projeto de amostra, você encontra o código-fonte em java-properties/callout/src/main/java/JavaProperties.java. Mostraremos as etapas para compilar e implantar esse código posteriormente neste tópico.

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

Compilar o código com o Maven

O projeto é configurado para que você possa compilar com o Maven. Se você quiser usar javac, incluiremos um exemplo também.

  1. Verifique se o Maven está instalado:
    mvn -version
    
  2. Execute o script a java-properties/buildsetup.sh. Esse script instala as dependências JAR necessárias no seu repositório Maven local.
  3. cd para o diretório java-properties/callout.
  4. Execute o Maven:
    mvn clean package
    
  5. Se você quiser, verifique se o arquivo JAR edge-custom-policy-java-properties.jar foi copiado para java-properties/apiproxy/resources/java. Esse é o local necessário para os arquivos JAR que você quer implantar com um proxy.

Compilar com javac (opcional)

Se você quiser usar javac para compilar o código, faça algo semelhante ao seguinte (do diretório java-properties). Os arquivos JAR necessários são fornecidos a você no diretório java-properties/lib.

  1. cd para api-platform-samples/doc-samples/java-properties.
  2. Verifique se você tem javac no seu caminho.

    javac -version
    
  3. Execute o seguinte 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. Crie um arquivo JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. Copie o arquivo JAR para o diretório apiproxy/resources/java. Esse é o local necessário para os arquivos JAR que você quer implantar com um proxy.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java
    

Implantar e chamar o proxy

Um script de implantação é fornecido no diretório ./java-properties. Mas, antes de executá-lo, você precisa fazer uma configuração rápida.

  1. cd para api-platform-samples/doc-samples/java-properties
  2. Se você ainda não tiver feito isso, abra o arquivo ../../setup/setenv.sh e edite-o conforme indicado nas informações da sua conta da Apigee: seu nome de usuário (o endereço de e-mail associado à sua conta), o nome da organização e o domínio usado para fazer chamadas de gerenciamento de API. Por exemplo, para a nuvem de borda, o domínio é https://api.enterprise.apigee.com. No entanto, seu domínio poderá ser diferente se você estiver usando a nuvem privada do Edge.
  3. Salve o arquivo setenv.sh.
  4. Execute o script de implantação:
    ./deploy.sh
    
  5. Se a implantação for bem-sucedida, execute o script de invocação:
    ./invoke.sh
    

    O script de invocação chama um comando cURL que tem a seguinte aparência:

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

    O proxy retorna o cabeçalho: X-PROPERTY-HELLO: WORLD!. Não se esqueça de que adicionamos na política um par de nome/valor de propriedade "prop/WORLD!". A frase de destaque Java recupera o valor "WORLD!" e o define em um cabeçalho chamado X-PROPERTY-HELLO:

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