Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
O que é um comando Java?
Se não tem experiência com JavaCallouts, recomendamos que comece por ler o artigo Como criar um Java callout.
Usar propriedades em políticas JavaCallout
As propriedades permitem-lhe especificar pares de nome/valor numa política JavaCallout aos quais pode aceder a partir do seu código Java no tempo de execução. Tem de especificar um valor de string literal para cada propriedade. Não pode fazer referência a variáveis de fluxo neste elemento.
Vejamos um exemplo simples de uma política JavaCallout que usa propriedades. Neste exemplo, criamos um proxy com uma política JavaCallout. A política usa o elemento <Properties>
para especificar um par de nome/valor. No código Java, vamos
obter o valor e usá-lo para definir um cabeçalho de resposta.
Transfira o projeto
Para simplificar, pode transferir este projeto do repositório api-platform-samples do Apigee no GitHub.
- Transfira ou clone api-platform-samples para o seu sistema.
- Num terminal ou num editor de código à sua escolha, aceda ao projeto
api-platform-samples/doc-samples/java-properties
.
A política JavaCallout
A política usa o elemento <Properties>
. Este elemento permite especificar
pares de nome/valor. Em tempo de execução, o seu código Java pode aceder aos 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>
O exemplo de código Java
O código Java deste exemplo mostra como obter uma propriedade especificada na política JavaCallout. No projeto de exemplo, pode encontrar o código-fonte em
java-properties/callout/src/main/java/JavaProperties.java
. Vamos explicar os passos para compilar e implementar este código mais adiante 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; } } }
Compile o seu código com o Maven
O projeto está configurado para que possa compilar com o Maven. Se quiser usar javac
, também incluímos um exemplo.
- Certifique-se de que tem o Maven instalado:
mvn -version
- Execute o script
java-properties/buildsetup.sh
. Este script instala as dependências JAR necessárias no seu repositório Maven local. - cd para o diretório
java-properties/callout
. - Executar Maven:
mvn clean package
- Se quiser, verifique se o ficheiro JAR
edge-custom-policy-java-properties.jar
foi copiado parajava-properties/apiproxy/resources/java
. Esta é a localização necessária para os ficheiros JAR que quer implementar com um proxy.
Compilar com javac (opcional)
Se quiser usar o javac
para compilar o código, pode fazer algo semelhante ao seguinte (a partir do diretório java-properties
). Os ficheiros JAR necessários são fornecidos
para si no diretório java-properties/lib
.
- cd para
api-platform-samples/doc-samples/java-properties
. - Certifique-se de que tem o javac no seu caminho.
javac -version
- 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
- Crie um ficheiro JAR:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
- Copie o ficheiro JAR para o diretório apiproxy/resources/java. Esta é a localização necessária
para os ficheiros JAR que quer implementar com um proxy.
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
Implemente e chame o proxy
É fornecido um script de implementação no diretório ./java-properties
. No entanto, antes de o
executar, tem de fazer uma configuração rápida.
- cd para
api-platform-samples/doc-samples/java-properties
- A forma mais simples de implementar o proxy é incluí-lo num ficheiro ZIP e carregar o pacote do proxy para um ambiente na sua organização do Apigee. Consulte o artigo Criar um proxy de API. Certifique-se de que usa a opção Carregar pacote de proxy. Veja também Sugestões e truques para carregar um proxy de API num pacote de proxies na comunidade do Apigee.
- Quando o proxy for implementado, experimente chamá-lo:
curl https://$HOSTNAME/java-properties
O proxy devolve o cabeçalho:
X-PROPERTY-HELLO: WORLD!
. Lembre-se de que na política adicionámos um par de nome/valor da propriedade"prop/WORLD!"
. A política JavaCallout obtém o valor"WORLD!"
e define-o num cabeçalho denominadoX-PROPERTY-HELLO
:messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));