
![[8.5.5.6 o posterior]](../ng_v8556.gif)
Administración de la API REST por lotes
El perfil Liberty de WebSphere Application Server incluye una interfaz de gestión RESTful para gestionar los trabajos por lotes.
Las operaciones básicas que están asociadas con un trabajo por lotes son enviar (iniciar), detener, reiniciar y ver estado. Puede realizar estas operaciones utilizando un cliente REST de HTTP cualquiera. Los datos que se envían como parte de una solicitud o se devuelven como parte de una respuesta tienen un formato JSON.
Los ejemplos siguientes muestran las funciones que puede realizar con la API REST.
- Instancias de trabajo
- Ejecuciones de trabajos
- Ejecuciones de paso
- Registros de trabajo
- Códigos de retorno HTTP
- Solicitudes STOP en un entorno de proceso por lotes de servidor distribuido
- Solicitudes JOBLOGS en un entorno de proceso por lotes de servidor distribuido
- Solicitudes de depuración en un entorno por lotes de servidor distribuido
Instancias de trabajo
- GET /ibm/api/batch/jobinstances/
- Este URI devuelve una lista de instancias de trabajo. Los parámetros de consulta incluyen:
- page=[número página ]: indica qué página (subconjunto de registros) se devuelve. El valor predeterminado es 0.
- pageSize=[número de registros por página]: indica el número de registros por página. El valor predeterminado es 50.
- Solicitudes de ejemplo:
https://localhost:9443/ibm/api/batch/jobinstances
https://localhost:9443/ibm/api/batch/jobinstances?page=13&pagesize=20
- Respuesta de ejemplo:
[ { "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" } ] }, { "jobName":"test_sleepyBatchlet", "instanceId":6, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6/joblogs" } ] } ]
- GET /ibm/api/batch/jobinstances/ID de instancia de trabajo
- Este URI devuelve información detallada sobre la instancia de trabajo especificada como, por ejemplo, todas las ejecuciones que están asociadas con una instancia de trabajo especificada. Los resultados se devuelven en orden de más reciente a más antiguo. El resultado más reciente se muestra en el primer lugar de la lista.
- Respuesta de ejemplo:
{ "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" }, { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/jobexecutions/7" } ] }
- POST /ibm/api/batch/jobinstances/
- Utilice este URI para enviar (iniciar) un nuevo trabajo. El siguiente ejemplo muestra el cuerpo de solicitud para enviar un trabajo empaquetado en un módulo WAR con formato JSON:
{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJob.war", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
El siguiente ejemplo muestra el cuerpo de solicitud para enviar un trabajo empaquetado en un módulo EJB con formato JSON:{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJobEJB.jar", "componentName" : "MyEJB", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
applicationName identifica la aplicación por lotes. Es necesario a menos que se especifique moduleName, en cuyo caso, applicationName se obtiene de moduleName recortando el sufijo .war o .jar de moduleName. Por ejemplo, si no proporciona ningún applicationName y moduleName=SimpleBatchJob.war, applicationName toma el valor predeterminado SimpleBatchJob.
moduleName identifica el módulo dentro de la aplicación por lotes que contiene los artefactos de trabajo como, por ejemplo, el JSL. El trabajo se envía con el contexto de componente del módulo. moduleName es necesario a menos que se especifique applicationName, en cuyo caso moduleName se obtiene de applicationName añadiendo .war a applicationName. Por ejemplo, si proporciona applicationName=SimpleBatchJob y no proporciona ningún moduleName, moduleName toma el valor predeterminado SimpleBatchJob.war.
componentName identifica el componente EJB dentro del módulo EJB de la aplicación por lotes. Si se especifica, el trabajo se envía con el contexto de componente del EJB.Nota: componentName sólo es necesario si el módulo es un módulo EJB. Cuando el módulo es un módulo WAR, componentName no es necesario.Debe especificar un valor para jobXMLName. El valor de jobParameters es opcional.
- La respuesta de ejemplo siguiente muestra un envío de trabajo correcto:
{ "jobName": "test_sleepyBatchlet", "instanceId": 10, "appName": "SimpleBatchJob#SimpleBatchJob.war", "submitter": "bob", "batchStatus": "STARTING", "jobXMLName": "test_sleepyBatchlet", "instanceState": "SUBMITTED", "_links": [ { "rel": "self", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10" }, { "rel": "job logs", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10/joblogs" } ] }
- PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=stop
- Utilice este URI para detener la ejecución de trabajos más reciente asociada con esta instancia de trabajo si se está ejecutando. De lo contrario, la API devuelve un error.
- PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=restart
- Utilice este URI para reiniciar la ejecución de trabajos más reciente asociada con esta instancia de trabajo solo si tiene un estado STOPPED o FAILED. Si no hay ninguna ejecución de trabajos asociada con esta instancia o si la última ejecución de trabajos tiene un estado COMPLETED, la API devuelve un error.
- PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=restart&reusePreviousParams=true
- Utilice este URI para reiniciar la ejecución de trabajo más reciente y reutilizar los parámetros del trabajo de la ejecución anterior asociada con esta instancia de trabajo. El estado de la ejecución anterior debe ser STOPPED o FAILED. Si no hay ninguna ejecución de trabajos asociada con esta instancia o si la última ejecución de trabajos tiene un estado COMPLETED, la API devuelve un error. Tenga en cuenta que reusePreviousParams es un valor opcional. El valor predeterminado es reusePreviousParams=false.Nota: Si reusePreviousParams=true, cualquier parámetro de trabajo que se envíe como parte de la solicitud de reinicio actual tiene prioridad sobre cualquier parámetro de trabajo anterior. Los parámetros actuales alteran temporalmente los parámetros anteriores con el mismo nombre de clave de parámetro de trabajo.
- DELETE /ibm/api/batch/jobinstances/ID de instancia de trabajo
- Utilice este URI para depurar todas las entradas de base de datos y los registros de trabajo asociados con esta instancia de trabajo. Esta API devuelve un error si la instancia de trabajo tiene ejecuciones de trabajos activas. Si existe un error de supresión de los registros de trabajo, no se intenta suprimir los datos de la instancia del trabajo en la base de datos del almacén de trabajos.
- DELETE /ibm/api/batch/jobinstances/ID de instancia de trabajo?purgeJobStoreOnly=true
- Utilice este URI para depurar solo las entradas de base de datos asociadas con esta instancia de trabajo. Si purgeJobStoreOnly=true, no se intenta depurar los registros de trabajo asociados a esta instancia de trabajo. El valor predeterminado es purgeJobStoreOnly=false. Esta API devuelve un error si la instancia de trabajo tiene ejecuciones de trabajos activas.
Ejecuciones de trabajos
- GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos
- Este URI devuelve información detallada sobre una ejecución de trabajos especificada, e incluye enlaces a ejecuciones de pasos y registros de trabajo asociados.
- Solicitud de ejemplo:
http://localhost:9443/ibm/api/batch/jobinstances/9/jobexecutions/9
- Respuesta de ejemplo:
{ "jobName":"test_sleepyBatchlet", "executionId":9, "instanceId":9, "batchStatus":"COMPLETED", "exitStatus":"COMPLETED", "createTime":"2015/05/07 16:09:41.025 -0400", "endTime":"2015/05/07 16:09:52.127 -0400", "lastUpdatedTime":"2015/05/07 16:09:52.127 -0400", "startTime":"2015/05/07 16:09:41.327 -0400", "jobParameters":{ }, "restUrl":"https://localhost:9443/ibm/api/batch", "serverId":"localhost/C:/ibm/RAD_workspaces/Liberty7/build.image/wlp/usr/server1", "logpath":"C:\\ibm\\Liberty\\wlp\\usr\\servers\\server1\\logs\\joblogs\\test_sleepyBatchlet\\2015-05-07\\instance.9\\execution.9\\", "stepExecutions":[ { "stepExecutionId":9, "stepName":"step1", "batchStatus":"COMPLETED", "exitStatus":"SleepyBatchlet:i=10;stopRequested=false", "stepExecution":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions/step1" } ], "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" }, { "rel":"step executions", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/joblogs" }, { "rel":"stop url", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9?action=stop" } ] }
- GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/jobexecutions/Número de secuencia de ejecución de trabajo
- Este URI devuelve información detallada sobre una ejecución de trabajos especificada, e incluye enlaces a ejecuciones de pasos y registros de trabajo asociados.
- PUT /ibm/api/batch/jobexecutions/ID de ejecución de trabajos?action=stop
- Utilice este URI para detener la ejecución de trabajos en ejecución especificada. Los parámetros necesarios incluyen action = stop, restart.
- PUT /ibm/api/batch/jobexecutions/ID de ejecución de trabajos?action=restart
- Utilice este URI para reiniciar la ejecución de trabajos especificada. Los parámetros necesarios incluyen action = stop, restart.
Ejecuciones de paso
- GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/stepexecutions
- Este URI devuelve una matriz JSON de todos los detalles de ejecución de pasos para la ejecución de trabajos especificada. Si el trabajo contiene un paso particionado, se devolverá la información de partición listada en cada paso.
- Solicitud de ejemplo:
https://localhost:8020/ibm/api/batch/jobexecutions/40/stepexecutions
- El ejemplo siguiente muestra una respuesta para un paso particionado.
[ { "stepExecutionId":47, "executionId":39, "instanceId":35, "stepName":"step1", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:08.652 -0400", "endTime":"2015/03/30 11:10:09.817 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.579 -0400", "endTime":"2015/03/30 11:10:09.706 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.257 -0400", "endTime":"2015/03/30 11:10:09.302 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.469 -0400", "endTime":"2015/03/30 11:10:09.548 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } } ] }, { "stepExecutionId":51, "executionId":39, "instanceId":35, "stepName":"step2", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.915 -0400", "endTime":"2015/03/30 11:10:10.648 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.324 -0400", "endTime":"2015/03/30 11:10:10.417 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.260 -0400", "endTime":"2015/03/30 11:10:10.347 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.507 -0400", "endTime":"2015/03/30 11:10:10.557 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "_links":[ { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" } ] } ]
- GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/stepexecutions/nombre de paso
- Este URI devuelve una matriz JSON que contiene los detalles de ejecución de pasos para la ejecución de trabajos y el nombre de paso especificados.
- GET /ibm/api/batch/jobeinstances/ID de instancia de trabajo/jobexecutions/>número de secuencia de ejecución de trabajos/stepexecutions/nombre de paso
- Este URI devuelve una matriz JSON que contiene los detalles de ejecución de pasos para la instancia de trabajo, la ejecución de trabajos y el nombre de paso especificados.
- GET /ibm/api/batch/stepexecutions/ID de ejecución de pasos
- Este URI devuelve una matriz JSON que contiene los detalles de ejecución de pasos para la ejecución de pasos especificada.
Registros de trabajo
- GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/joblogs
- Este URI devuelve una matriz JSON con enlaces REST a todos los componentes de registro de trabajo para la instancia de trabajo especificada.
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs
- Este URI devuelve una matriz JSON con enlaces REST a todos los componentes de registro de trabajo para la ejecución de trabajos especificada. Importante: El ejemplo siguiente muestra el formato de los enlaces REST.Si la ejecución de trabajos tiene los siguientes componentes de registro de trabajo:
los enlaces REST correspondientes son:joblogs/instance.inst-id/execution.exec-id/part.1.log joblogs/instance.inst-id/execution.exec-id/part.2.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.0/part.1.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.1/part.1.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.2.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.0/part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.1/part.1.log
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs
- Los parámetros opcionales son:
- type = text
- Text devuelve todos los registros de trabajo como texto sin formato. Todos los componentes de registro de trabajo se agregan conjuntamente. Se insertan registros de cabecera y pie de página delimitadores de componentes en la corriente para delimitar los distintos componentes a medida que se agregan conjuntamente. Type = text es el valor predeterminado.
- type = zip
- Zip devuelve todos los registros de trabajo para la ejecución de trabajos o la instancia de trabajo especificada como un archivo comprimido. La estructura de directorios de los registros de trabajo se conserva en el archivo comprimido.
- GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/joblogs?part=vía de acceso al componente&type=text|zip
- Este URI devuelve los componentes de registro de trabajo como texto sin formato (type=text) o en un archivo comprimido (type=zip). El valor predeterminado es type=text.
Códigos de retorno HTTP
- HTTP 200 Correcto.
- HTTP 201 Se creado satisfactoriamente un nuevo recurso.
- HTTP 202 Se ha aceptado la solicitar, pero el proceso no se ha completado.
- HTTP 400 Solicitud anómala con parámetros no válidos. Consulte el mensaje devuelto para obtener más detalles.
- HTTP 401 No está autorizado para acceder a este recurso.
- HTTP 403 La autenticación ha fallado.
- HTTP 404 El recurso solicitado no se encuentra o no existe.
- HTTP 409 La solicitud está en conflicto con el estado actual del recurso. Consulte el mensaje devuelto para obtener más detalles.
- HTTP 500 Error de servidor interno.
Solicitudes STOP en un entorno de proceso por lotes de servidor distribuido
Las solicitudes de detención enviadas a la API REST por lotes deben enviarse directamente al ejecutor donde se está ejecutando el trabajo. Si se envía una solicitud de detención a un asignador o a un ejecutor donde no se está ejecutando el trabajo, la solicitud se redirige al ejecutor correcto mediante un mensaje de respuesta de redirección HTTP 302. El campo ubicación en la respuesta de redirección HTTP 302 indica el URL correcto que se debe utilizar para la solicitud de detención.