Detección de bucles infinitos en las instancias de servicios y procesos
Hay un conjunto de propiedades de detección de bucles que puede utilizar para detectar y manejar bucles infinitos en servicios e instancias de proceso.
Si un servicio se ejecuta durante más tiempo, el motor de servicios registra un mensaje en SystemOut.log o detiene el servicio. La propiedad loop-detection-exception determina qué acción realiza el motor. Si se establece en true, el motor detiene el servicio y genera una excepción. De forma predeterminada, esta propiedad está establecida en false.
La excepción se utiliza para notificar a la instancia de BPD que contiene el servicio que el motor de servicios se ha detenido.
- Si una instancia de BPD se ejecuta durante más tiempo, el motor de BPD registra un mensaje en SystemOut.log. Un administrador puede utilizar esta información para suspender o manejar la instancia.
<service-engine>
<loop-detection-duration>120</loop-detection-duration>
<loop-detection-exception>false</loop-detection-exception>
</service-engine>
<bpd-engine>
<loop-detection-duration>60</loop-detection-duration>
</bpd-engine>
- CWLLG0872W: El servicio '{0}' se ha ejecutado durante {1} segundos y puede estar en un bucle infinito.
- CWLLG0873W: El servicio '{0}' para la instancia {1} se ha ejecutado durante {2} segundos y puede estar en un bucle infinito.
- CWLLG0874E: El servicio '{0}' se ha terminado después de {1} segundos porque puede estar en un bucle infinito.
- CWLLG0875E: El servicio '{0}' para la instancia {1} se ha terminado después de {2} segundos porque puede estar en un bucle infinito.
Si las instancias de BPD no están en un bucle infinito, pero el mensaje siguiente se encuentra en el archivo SystemOut.log, considere la posibilidad de modificar los valores de loop-detection-duration para el motor de BPD: CWLLG0871W: La instancia de BPD (definición de proceso de negocio) {0} se ha ejecutado durante {1} segundos y puede estar en un bucle infinito.
Por ejemplo, para modificar el motor de servicios para que detenga el servicio después de cuatro minutos (240 segundos), añada el código siguiente al archivo 100Custom.xml adecuado:
<server>
<service-engine>
<loop-detection-duration merge="replace">240</loop-detection-duration>
<loop-detection-exception merge="replace">true</loop-detection-exception>
</service-engine>
</server>