Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
O que é uma chamada de Java?
Se você é iniciante nas chamadas do Java, comece com Como criar uma frase de destaque Java.
Como solucionar erros em uma chamada do Java
Ao escrever uma chamada de Java, é possível querer fazer tratamento de erros personalizado no seu código Java. Por exemplo, convém retornar mensagens de erro e cabeçalhos personalizados e/ou definir variáveis de fluxo com informações de erro no fluxo de proxy no Edge.
Vejamos um exemplo simples de chamada de Java que ilustra padrões básicos de tratamento de erros personalizados. A amostra retorna uma mensagem de erro personalizada quando ocorre uma exceção. Ele também coloca o rastreamento de pilha de erros em uma variável de fluxo, o que pode ser uma técnica útil de depuração.
Fazer o download do projeto
Para simplificar, faça o download deste projeto do repositório api-platform-samples da Apigee no GitHub.
- Faça o download ou clone api-platform-samples no seu sistema.
- Em um terminal ou editor de código de sua escolha, acesse o projeto
api-platform-samples/doc-samples/java-error.
A amostra de código Java
Os padrões de tratamento de erros são simples. É possível definir variáveis de fluxo no contexto de fluxo atual do
Edge com o messageContext.setVariable() método. Para retornar informações de erro personalizadas, crie uma instância do ExecutionResult e chame métodos nela para
definir a resposta e os cabeçalhos dos erros.
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 com.apigee.flow.execution.Action; import org.apache.commons.lang.exception.ExceptionUtils; public class JavaError implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { throw new RuntimeException("Please specify a name parameter!"); } return ExecutionResult.SUCCESS; } catch (RuntimeException ex) { ExecutionResult executionResult = new ExecutionResult(false, Action.ABORT); //--Returns custom error message and header executionResult.setErrorResponse(ex.getMessage()); executionResult.addErrorResponseHeader("ExceptionClass", ex.getClass().getName()); //--Set flow variables -- may be useful for debugging. messageContext.setVariable("JAVA_ERROR", ex.getMessage()); messageContext.setVariable("JAVA_STACKTRACE", ExceptionUtils.getStackTrace(ex)); return executionResult; } } }
Compile seu 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.
- Verifique se você tem o Maven instalado:
mvn -version
- Execute o script a
java-error/buildsetup.sh. Esse script instala as dependências JAR necessárias no seu repositório Maven local. - cd para o diretório
java-error/callout. - Execute o Maven:
mvn clean package
- Se você quiser, verifique se o arquivo JAR
edge-custom-policy-java-error.jarfoi copiado parajava-error/apiproxy/resources/java. Este é o local necessário para os arquivos JAR que você quer implantar com um proxy.
Compilar com javac
Se você quiser usar javac para compilar o código, faça algo semelhante
ao seguinte (do diretório java-error). Os arquivos JAR necessários são fornecidos
a você no diretório java-error/lib.
- cd para
api-platform-samples/doc-samples/java-error. - Verifique se você tem 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
- 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 com/apigeesample/JavaProperties.class apiproxy/resources/java
Implantar e chamar o proxy
Um script de implantação é fornecido no diretório ./java-error. Mas, antes de executá-lo,
você precisa fazer uma configuração rápida.
- cd para
api-platform-samples/doc-samples/java-error - Se ainda não tiver feito isso, abra o arquivo
../../setup/setenv.she edite o conforme indicado com as informações da sua conta da Apigee: nome de usuário (o endereço de e-mail associado à sua conta), nome da organização e o domínio usado para fazer chamadas de gerenciamento de API. Por exemplo, para a nuvem do Edge, 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. - Salve o arquivo
setenv.sh. - Execute o script de implantação:
./deploy.sh
- 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 se parece com este:
curl http://$org-$env.$api_domain/java-error
Como a chamada não inclui um parâmetro de consulta de "nome", o código Java gera um erro de tempo de execução. O proxy retorna esta mensagem e cabeçalho:
- Mensagem de erro:
Please specify a name parameter! - Cabeçalho:
ExceptionClass: java.lang.RuntimeException