Oracle SOA Suite 11g. ClassNotFoundException: oracle.bpm.bpmn.engine.instancemanagement.ejb.*

 

En un ambiente de cluster con Oracle SOA Suite 11g, es probable que te salgan errores como los siguientes:

Dec 23, 2014 3:18:04 PM CST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'soa-infra'.
weblogic.application.ModuleException: Exception activating module: EJBModule(fabric-ejb.jar)
Unable to deploy EJB: FacadeFinderBean from fabric-ejb.jar:
[J2EE:160101]Error: The ejb-link 'BPELActivityManagerBean' declared in the ejb-ref or ejb-local-ref 'ejb/local/bpel/CubeActivityManagerBean' in the application module 'fabric-ejb.jar' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
    at weblogic.ejb.container.deployer.EJBModule.activate(EJBModule.java:516)
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:227)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:542)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:175)
    Truncated. see log file for complete stacktrace
Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'BPELActivityManagerBean' declared in the ejb-ref or ejb-local-ref 'ejb/local/bpel/CubeActivityManagerBean' in the application module 'fabric-ejb.jar' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
    at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:469)
    at weblogic.ejb.container.deployer.EnvironmentBuilder.addEJBLocalReferences(EnvironmentBuilder.java:773)
    at weblogic.ejb.container.deployer.EJBDeployer.activateEnvironment(EJBDeployer.java:1740)
    at weblogic.ejb.container.deployer.EJBDeployer.activate(EJBDeployer.java:1423)
    at weblogic.ejb.container.deployer.EJBModule.activate(EJBModule.java:495)
    Truncated. see log file for complete stacktrace>

 

<Dec 23, 2014 3:18:05 PM CST> <Error> <Cluster> <BEA-000140> <Failed to deserialize statedump from server SOAServer1 with java.lang.ClassNotFoundException: oracle.bpm.bpmn.engine.instancemanagement.ejb.UserInitiateProcessCleanupRemote.
java.lang.ClassNotFoundException: oracle.bpm.bpmn.engine.instancemanagement.ejb.UserInitiateProcessCleanupRemote
    at weblogic.application.internal.AppClassLoaderManagerImpl.loadApplicationClass(AppClassLoaderManagerImpl.java:164)
    at weblogic.common.internal.ProxyClassResolver.resolveProxyClass(ProxyClassResolver.java:68)
    at weblogic.common.internal.WLObjectInputStream.resolveProxyClass(WLObjectInputStream.java:76)
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1535)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1491)
    Truncated. see log file for complete stacktrace

La parte relevante, por la cual seguramente estarás con problemas, es esta:

Dec 23, 2014 3:18:04 PM CST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'soa-infra'.

Tu soa-infra no está arrancando bien. Si bien Weblogic llega a estar en estado RUNNING, la soa-infra no pudo arrancar bien.

Si tu escenario es un clúster de dos o mas nodos, en donde un nodo está levantando bien y el resto no. Entonces estás teniendo el problema descrito en este post.

Una vez que reconoces que la soa-infra no está levantando, seguramente verás los siguientes errores relacionados a los EJBs del engine de SOA/BPM:

Unable to deploy EJB: FacadeFinderBean from fabric-ejb.jar:
[J2EE:160101]Error: The ejb-link 'BPELActivityManagerBean' declared in the ejb-ref or ejb-local-ref 'ejb/local/bpel/CubeActivityManagerBean' in the application module 'fabric-ejb.jar' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.

Y luego una que puede ser engañosa:

java.lang.ClassNotFoundException: oracle.bpm.bpmn.engine.instancemanagement.ejb.UserInitiateProcessCleanupRemote.

Lo mas rápido es borrar/renombrar las carpetas tmp y la de cache, abajo del servidor manejado en cuestión. O bien de los servidores manejados que estén involucrados.

Por ejemplo: $MW_HOME\user_projects\domains\soa_domain\servers\<NombreDelServer>\tmp

$MW_HOME\user_projects\domains\soa_domain\servers\<NombreDelServer>\cache

Una vez que las borres, reinicia todo tu dominio y valida que los servidores levanten bien.

Si esta opción no funciona, entonces intenta haciendo un untarget de la app soa-infra de los nodos del cluster; reinicia todo el dominio y vuelve a hacer target de la app soa-infra a tu cluster. Finalmente vuelve a reiniciar.

Si esta opción tampoco funciona, realiza los siguientes pasos:

  1. Deten todo tu dominio
  2. Ve a la carpeta $MW_HOME\user_projects\domains\soa_domain\config y abre el archivo config.xml. Previo a esto hazle un backup
  3. Adentro de config.xml, busca una entrada similar a esta: <app-deployment>
    <name>soa-infra</name>
    <target>soa_cluster</target>
    <module-type>ear</module-type>
    <source-path>C:/oracle/11.1.1.6/Oracle_SOA1/soa/applications/soa-infra-wls.ear</source-path>
    <deployment-order>350</deployment-order>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
    </app-deployment>
  4. Comenta toda la entrada de app-deployment.
  5. Con esto lo que vamos a hacer es reiniciar el dominio, pero sin cargar a soa-infra
  6. Arranca tanto el admin como los nodos de tu cluster
  7. Para los nodos, realízalo en orden. Es decir, primero un nodo y así sucesivamente
  8. Una vez que arrancaron todos los nodos, para todo su dominio
  9. Con el dominio detenido, abre el config.xml y descomenta la entrada que revisamos en el paso 3
  10. Vuelve a arrancar tu dominio, una vez mas hazlo en orden. Y valida que todo levante bien.

¿Por qué sucede esto?

Mi teoría es que estás levantando mal tus nodos del clúster en dónde vive la soa-infra. Seguramente estas mezclando levantarlos via node manager y con los scripts. Mi sugerencia es que todo lo hagas vía el node manager.