En algunas ocasiones es posible que el Oracle Service
Registry (OSR) no pueda obtener una conexión desde el pool de conexiones
creadas por el Data Source, esto puede producirse después de volver a realizar
el despliegue de la aplicación del OSR.
Si buscamos errores en el log del Managed Server donde está
desplegada la aplicación es posible que no encontremos información relevante.
El log que se debería revisar es entonces:
$DOMAIN_HOME/servers/<server_name>/tmp/_WL_user/registry/<random_directory>/public/serviceRegistry_errorEvents.log
En éste log vemos que las siguientes líneas aparecen:
<2013-04-11
15:46:02,557> - <ID1365713947710> <ERROR> <WSP4005>
com.systinet.uddi.webui.WebUIRawService -
- EXCEPTION: org.systinet.uddi.account.AccountException: Initialization
of accounts has failed. For help please contact the administrator of the registry.
<2013-04-11
15:46:03,518> - <ID1365713947711> <WARN> <WSP4005>
database_core.com.systinet.uddi.config.management.DatabaseConfig - Ignoring
exception in event handler, it may be caused by unavailablity of database. -
EXCEPTION: java.lang.RuntimeException: com.systinet.uddi.database.DatabaseCoreException:
(12021) Cannot obtain new connection.
<2013-04-11
15:46:03,561> - <ID1365713947712> <WARN> <WSP4005>
database_core.com.systinet.uddi.config.management.DatabaseConfig - Ignoring
exception in event handler, it may be caused by unavailablity of database. -
EXCEPTION: java.lang.RuntimeException:
com.systinet.uddi.database.DatabaseCoreException: (12021) Cannot obtain new
connection.
<2013-04-11
15:46:03,563> - <ID1365713947713> <ERROR> <WSP4005>
uddi_inquiry_v3.com.systinet.uddi.inquiry.v3.database.Get -
DatabaseCoreException - EXCEPTION:
com.systinet.uddi.database.DatabaseCoreException: (12021) Cannot obtain new
connection.
<2013-04-11
15:46:03,565> - <ID1365713947714> <ERROR> <WSP4005>
permission.com.systinet.uddi.permission.database.DBPermissionApiImpl -
DatabaseCoreException - EXCEPTION:
com.systinet.uddi.database.DatabaseCoreException: (12021) Cannot obtain new
connection.
<2013-04-11
15:46:05,471> - <ID1365713947715> <ERROR> <WSP4005>
uddi_inquiry_v3.com.systinet.uddi.inquiry.v3.database.Get -
DatabaseCoreException - EXCEPTION:
com.systinet.uddi.database.DatabaseCoreException: (12021) Cannot obtain new
connection.
Como se logra ver en las lineas del log, claramente la
conexión a la base de datos no se puede realizar. Entonces el problema puede
ser causado por lo siguiente:
- El Data Source está creado en el weblogic con credenciales no validas.
- No hay comunicación entre la aplicación desplegada y el Data Sorce.
Sin embargo, al testear el Data Source desde el weblogic, se
confirmó que el Data Source sí era válido y que las credenciales utilizadas
eran correctas. Entonces solo queda una opción, el despliegue no se comunica
con el Data Source.
Y aquí es donde viene la pregunta: ¿Cómo hace el despliegue
para comunicarse con su Data Source?
Por intuición me recordé de aquella herramienta que el
Oracle Service Registry trae con sus binarios llamada "setup.sh" o
"setup.exe" según sea el SO sobre el cual este el OSR, me recordé que
esta herramienta trae una opción de "reconfigurar la conexión a la base de
datos", donde se puede elegir en crear un tablespace, utilizar un
tablespace existe y crear el esquema adecuado o simplemente conectarse a un
esquema ya existente.
Para ejecutar esta herramienta en modo consola agregar la opción " -c", ejemplo "./setup.sh -c"
Esta herramienta está ubicada en:
$REGISTRY_HOME/bin
Utilicé esta herramienta para reconfigurar la conexión a la
base de datos. Seleccioné la opción de "conectarse a un esquema
existente", ingresé los datos correctos de la base de datos: host, puerto,
username, password, etc. La herramienta no retornó errores por lo que asumí que
había realizado su tarea exitosamente.
Es necesario detenernos en este punto y revisar el log de la
herramienta setup.sh, la cual se encuentra en:
$REGISTRY_HOME/log/setup.log
En este punto puede ser que muestre algún error relacionado
con la librería "ojdbc6.jar" que debe estar agregada en el CLASSPATH
del Managed Server donde está el OSR. Pero para mi problema, esta no fué la
causa, pues la librería estaba correctamente agregada.
Bueno, prosigamos. Como indicaba, en el log del setup.sh no habian
errores. Reinicié el Managed Server del OSR volví a ingresar a la aplicación y
no, el problema no se habia solucionado, en el log seguía mostrando "Cannot
obtain new connection". Por intuición pensé que esta herramienta
"setup.sh" volvía a reconfigurar todo lo necesario para restablecer
la conexión entre la aplicación y el Data Source, pero no, no fue así. Entonces
volví a la misma pregunta ¿Cómo
hace el despliegue para comunicarse con su Data Source?
Investigando llegué a la solución, el despliegue utiliza un
archivo XML para comunicarse con el Data Source, este archivo es llamado "database.xml"
y está ubicado en:
$DOMAIN_HOME/servers/<server_name>/tmp/_WL_user/registry/<random_directory>/public/app/uddi/conf/database.xml
Este archivo es el que debe modificarse manualmente,
indicando todos los datos correctos para lograr la conectividad con el Data
Source: host, puerto, username, password, instance_name, data source name, etc.
Al modificar dicho archivo, reinicié el Managed Server del
OSR, ingresé a la aplicación y pude por un momento imitar a Arquimides y
exclamé ¡Eureka!
No hay comentarios:
Publicar un comentario