Suite à une coupure d'électricité, le serveur n'arrive plus à démarrer les instances de OC4J.
L'administrateur du système (chez un client) m'appelle : « OAS ne marche plus et réclame une file d'attente JMS, le problème c'est qu'il n'y a jamais eu besoin de cette file d'attente ? »
En effet, le lancement du serveur ne s'effectue plus et le message d'erreur (dans le fichier log) est bizarre :
09/03/30 15:47:10 *** (SEVERE) Failed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/F:/product/10.1.3/OracleAS_1/j2ee/APP_FRONT/config/jms.xml] 09/03/30 15:47:15 ATTENTION: Application.setConfig Application: default is in failed state as initialization failedjava.lang.InstantiationException: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found 30 mars 2009 15:47:15 com.evermind.server.Application setConfig ATTENTION: Application: default is in failed state as initialization failedjava.lang.InstantiationException: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found 09/03/30 15:47:15 Error initializing server: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found 09/03/30 15:47:17 Fatal error: server exiting |
Heureusement, c'est bénin (pour ne pas dire banal):
Il suffit de se rappeler qu'OAS gère un système de fichiers LOCK dans le répertoire
%OAS10g_HOME%\oc4j\j2ee\home\persistence
Le nettoyage n'ayant pas été fait, lors de la coupure d'électricité, les fichiers de gestion de LOCK sont restés. Cela empêche OC4J de démarrer.
Malheureusement, il n'est pas programmé pour détecter ce type de situation.
La solution :
Il suffit (pour toutes les instances de OC4J)
- de supprimer les fichiers LOCk (*.lock)
- redémarrer le serveur (OC4J)
il faut avouer, ce n'est pas aussi simple qu'avec du Tomcat.