Instalación de Oracle Service Registry 11.1.1.6


Hace unos días me pidieron apoyo para validar un error durante la instalación de Oracle Service Registry 11g.
Si bien lo he instalado varias veces, nunca sobre el stack 11g. Realmente ha sido baja la necesidad de utilizarlo en los Proyectos; probablemente por la forma en la que el cliente ha abordado su iniciativa SOA.
La realidad es que es un componente muy valioso, y que al ser integrado con Oracle Enterprise Repository, realmente ofrece una plataforma de Governance sobre la construcción, despliegue, documentación, etc. alrededor de cualquier iniciativa de Arquitectura de Servicios.
Bien. Volviendo al punto técnico, el issue reportado era la instalación de Service Registry en un dominio ya existente de SOA o bien de Service Bus. A primera vista, ésto no debería de dar ningún problema.
Todo indicaba estar OK con la instalación. Realmente es algo simple cuando estás hablando de un single installation/stand-alone installation. Pues es darle Next a todas las pantallas.
Hay algunos pre-requisitos:
  1. Tener una BBDD instalada. De preferencia Oracle
  2. Tener un Application Server, como puede ser Weblogic 11g
Pero no mas que eso.
La instalación finaliza de manera adecuada, y posteriormente hay que extender el dominio actual (SOA u OSB, según se tenga). Para esto, el template generado por la instalación de OSR, se puede encontrar en:
$ORACLE_SERVICE_REGISTRY\common\templates\applications
De manera que ejecutas el Configuration Wizard, y extiendes el dominio con ese template.
Esto te pedirá lo normal: nombre del managed server, puertos, nombre del Datasource que pusiste durante la primera fase de instalación
Esto debe fluir de manera normal. Una vez terminado, levanta el managed server que creaste para el OSR. Realmente aquí no verás errores.
El problema está al tratar de abrir las consolas, por ejemplo:
http://localhost:7101/registry/uddi/web
El error que verás en el navegador, es:

Error 500--Internal Server Error

java.lang.LinkageError: Class javax/xml/namespace/QName violates loader constraints
 at com.idoox.wsdl.extensions.PopulatedExtensionRegistry.(PopulatedExtensionRegistry.java:84)
 at com.idoox.wsdl.factory.WSDLFactoryImpl.newDefinition(WSDLFactoryImpl.java:61)
 at com.idoox.wsdl.xml.WSDLReaderImpl.parseDefinitions(WSDLReaderImpl.java:419)
 at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:309)
 at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:272)
 at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:198)
 at com.idoox.wsdl.util.WSDLUtil.readWSDL(WSDLUtil.java:126)
 at com.systinet.wasp.admin.PackageRepositoryImpl.validateServicesNamespaceAndName(PackageRepositoryImpl.java:885)
 at com.systinet.wasp.admin.PackageRepositoryImpl.registerPackage(PackageRepositoryImpl.java:807)
 at com.systinet.wasp.admin.PackageRepositoryImpl.updateDir(PackageRepositoryImpl.java:611)
 at com.systinet.wasp.admin.PackageRepositoryImpl.updateDir(PackageRepositoryImpl.java:643)
 at com.systinet.wasp.admin.PackageRepositoryImpl.update(PackageRepositoryImpl.java:553)
 at com.systinet.wasp.admin.PackageRepositoryImpl.init(PackageRepositoryImpl.java:242)
 at com.idoox.wasp.ModuleRepository.loadModules(ModuleRepository.java:198)
 at com.systinet.wasp.WaspImpl.boot(WaspImpl.java:383)
 at org.systinet.wasp.Wasp.init(Wasp.java:151)
 at com.systinet.transport.servlet.server.Servlet.init(Unknown Source)
 at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
 at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)
 at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
 at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:48)
 at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:244)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
 at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
 at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
 at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)





En el log:


]] Root cause of ServletException.

java.lang.LinkageError: Class javax/xml/namespace/QName violates loader constrai


nts


        at com.idoox.wsdl.extensions.PopulatedExtensionRegistry.<init>(Populated


ExtensionRegistry.java:84)


        at com.idoox.wsdl.factory.WSDLFactoryImpl.newDefinition(WSDLFactoryImpl.


java:61)


        at com.idoox.wsdl.xml.WSDLReaderImpl.parseDefinitions(WSDLReaderImpl.jav


a:419)


        at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:309)


        at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:272)


        Truncated. see log file for complete stacktrace


>


El error está relacionado a las librerías que ocupa el OSR. Si éste lo instalas en un dominio ya creado para SOA o para OSB, tiene un problema con el POST_CLASSPATH que ocupan estos componentes. Por lo que es necesario hacer una diferencia en el setDomainEnv, para que , al identificar que quieres levantar al OSR, no establezca el valor del POST_CLASSPATH.


Esto se puede hacer, incorporando lo siguiente, en dicho archivo:


if NOT "%SERVER_NAME%"=="osr_server1" (

 
set POST_CLASSPATH=%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\oracle.soa.fabric.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\fabric-runtime-ext-wls.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.adapter_11.1.1\oracle.soa.adapter.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.b2b_11.1.1\oracle.soa.b2b.jar;%POST_CLASSPATH%


set POST_CLASSPATH=%DOMAIN_HOME%\config\soa-infra;%SOA_ORACLE_HOME%\soa\modules\fabric-url-handler_11.1.1.jar;%SOA_ORACLE_HOME%\soa\modules\quartz-all-1.6.5.jar;%POST_CLASSPATH%


set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.xdk_11.1.0\xsu12.jar;%BEA_HOME%\modules\features\weblogic.server.modules.xquery_10.3.1.0.jar;%SOA_ORACLE_HOME%\soa\modules\db2jcc4.jar;%POST_CLASSPATH%


set POST_CLASSPATH=%UMS_ORACLE_HOME%\communications\modules\usermessaging-config_11.1.1.jar;%POST_CLASSPATH%


set POST_CLASSPATH=C:\Oracleps5\Middleware\Oracle_SOA1\soa\modules\oracle.soa.common.adapters_11.1.1\oracle.soa.common.adapters.jar;%POST_CLASSPATH%


set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\soa\modules\commons-cli-1.1.jar;%COMMON_COMPONENTS_HOME%\soa\modules\oracle.soa.mgmt_11.1.1\soa-infra-mgmt.jar;%POST_CLASSPATH%


) else (

set POST_CLASSPATH=""


)


Claro está, que si pusiste otro nombre en el managed server, simplemente cámbialo.


Con esto, ya podrás entrar a la consola, y no verás ningún error al entrar a las consolas del OSR:


image





El error está reportado , así que no es algo que deba causar problemas al instalar el producto. Simplemente hay que considerar esto.