Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da Apigee Edge.
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 solucionar erros em uma chamada do Java
Ao escrever uma chamada do Java, é possível querer lidar com erros personalizados 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 na Apigee.
Vejamos um exemplo simples de frase de destaque 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 da Apigee com o método messageContext.setVariable()
. 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.jar
foi copiado parajava-error/apiproxy/resources/java
. Este é o local necessário para os arquivos JAR que você quer implantar com um proxy.
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
- A maneira mais simples de implantar o proxy é agrupá-lo em um arquivo ZIP e fazer upload do pacote de proxy em um ambiente na sua organização da Apigee. Consulte Como criar um proxy de API. Use a opção Fazer upload de pacote de proxy. Veja também Dicas e truques para fazer upload de proxy de API em um pacote proxy na comunidade Apigee.
- Quando o proxy estiver implantado, tente chamá-lo:
curl https://$HOSTNAME/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