Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
¿Qué es un texto destacado de Java?
Si es la primera vez que usas textos destacados de Java, te recomendamos comenzar con Crea un texto destacado de Java.
Maneja errores en un texto destacado de Java
Cuando escribas un texto destacado de Java, te recomendamos que controles los errores de forma personalizada en tu código Java. Para Por ejemplo, puedes devolver mensajes de error y encabezados personalizados o establecer variables de flujo con información de error en el flujo del proxy en Edge.
Veamos un ejemplo simple de texto destacado de Java que ilustra patrones de manejo de errores personalizados básicos. En el ejemplo, se muestra un mensaje de error personalizado cuando se produce una excepción. También coloca el seguimiento de pila de errores en una variable de flujo, lo que puede ser una técnica de depuración práctica.
Descarga el proyecto
Para simplificar el proceso, puedes descargar este proyecto del repositorio api-platform-samples de Apigee en GitHub.
- Descarga o clona api-platform-samples en tu sistema.
- En un editor de código o terminal de tu elección, ve al proyecto
api-platform-samples/doc-samples/java-error
.
El código Java de muestra
Los patrones de manejo de errores son directos. Puedes establecer variables de flujo en la
Contexto del flujo perimetral con el método messageContext.setVariable()
Para mostrar información de error personalizada, construye una instancia ExecutionResult
y llama a los métodos en ella a fin de configurar la respuesta de error y los encabezados.
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; } } }
Compila tu código con Maven
El proyecto está configurado para que puedas compilar con Maven. Si quieres usar javac
, también incluiremos un ejemplo.
- Asegúrate de tener instalado Maven:
mvn -version
- Ejecuta la siguiente secuencia de comandos
java-error/buildsetup.sh
. Esta secuencia de comandos instala las dependencias JAR necesarias en tu repositorio local de Maven. - cd al directorio
java-error/callout
. - Ejecuta Maven:
mvn clean package
- Si lo deseas, verifica que el archivo JAR
edge-custom-policy-java-error.jar
se copió enjava-error/apiproxy/resources/java
. Esta es la ubicación requerida para los archivos JAR que deseas implementar con un proxy.
Compila con javac
Si quieres usar javac
para compilar el código, puedes hacer algo similar a lo siguiente (desde el directorio java-error
). Los archivos JAR necesarios se proporcionan en el directorio java-error/lib
.
- cd a
api-platform-samples/doc-samples/java-error
. - Asegúrate de tener javac en tu ruta de acceso.
javac -version
- Ejecuta el siguiente comando javac:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- Copia el archivo JAR al directorio apiproxy/resources/java. Esta es la ubicación requerida para los archivos JAR que deseas implementar con un proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Implementa y llama al proxy
Se proporciona una secuencia de comandos de implementación en el directorio ./java-error
. Pero antes de ejecutarla, debes hacer una configuración rápida.
- Ve a
api-platform-samples/doc-samples/java-error
- Si aún no lo hiciste, abre el archivo
../../setup/setenv.sh
y edítalo. tal como se indica en la información de tu cuenta de Apigee: tu nombre de usuario (la dirección de correo electrónico asociado a tu cuenta), el nombre de tu organización y el dominio que usas para hacer que las APIs a las de administración de datos. Por ejemplo, en la nube perimetral, el dominio eshttps://api.enterprise.apigee.com
; Sin embargo, tu dominio puede ser diferente si estás con la nube privada perimetral. - Guarda el archivo
setenv.sh
. - Ejecuta la secuencia de comandos de implementación:
./deploy.sh
- Si la implementación se realiza correctamente, ejecuta la secuencia de comandos de invocación:
./invoke.sh
La secuencia de comandos de invocación llama a un comando cURL que se ve de la siguiente manera:
curl http://$org-$env.$api_domain/java-error
Debido a que la llamada no incluye un parámetro de consulta “name”, el código Java muestra un error en entorno de ejecución. El proxy muestra este mensaje y encabezado:
- Mensaje de error:
Please specify a name parameter!
- Encabezado:
ExceptionClass: java.lang.RuntimeException