javax.naming.NameAlreadyBoundException Weblogic

Oracle Weblogic Server

WebLogic Server (WLS) cluster fails to start while creating a durable subscriber during the activation of a JMS module.

Here is the complete stack trace of the relevant error:

javax.naming.NameAlreadyBoundException: The JNDI name weblogic.jms.internal.subscription.cid_DeclarationsFilenetBridgeMDB_sid_DeclarationsFilenetBridgeMDB was found, and was bound to an object of type weblogic.jms.common.DurableSubscription : DurableSubscription((SingularAggregatable(<3898676013644124700.1>:0)) [email protected]:null:false)
at weblogic.jms.backend.BEConsumerImpl.registerDurableSubscription(BEConsumerImpl.java:886)
at weblogic.jms.backend.BEConsumerImpl.init(BEConsumerImpl.java:329)
at weblogic.jms.backend.BEConsumerImpl.<init>(BEConsumerImpl.java:276)
at weblogic.jms.backend.BETopicImpl.recoverDurableSubscription(BETopicImpl.java:438)
at weblogic.jms.backend.BEDurableSubscriptionStore.restoreSubscriptions(BEDurableSubscriptionStore.java:166)
at weblogic.jms.backend.BETopicRuntimeDelegate.activate(BETopicRuntimeDelegate.java:94)
at weblogic.jms.backend.udd.UDDEntity.activate(UDDEntity.java:307)
at weblogic.jms.module.JMSModule$EntityState.setState(JMSModule.java:1717)
at weblogic.jms.module.JMSModule$EntityState.setState(JMSModule.java:1667)
at weblogic.jms.module.JMSModule$EntityState.access$100(JMSModule.java:1608)
at weblogic.jms.module.JMSModule.activate(JMSModule.java:332)
at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:194)
at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107)
at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:411)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:74)
at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:66)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)
at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:42)
at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:187)
at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:21)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:165)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
The MDB is a durable subscriber that directly connects to the Uniform Data Transfer (UDT) without configuring generate-unique-jms-client-id in the MDB’s weblogic-ejb-jar.xml file.

In WLS 10.3.1.X, without “generate-unique-jms-client-id”, MDB as durable subscriber cannot directly connect to UDT.
In order to make durable subscriber MDBs successfully directly connect to the UDT, generate-unique-jms-client-id must be set in the MDB’s weblogic-ejb-jar.xml file.

Below is a sample:

<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
</pool>
<destination-jndi-name>UDTMDBTest</destination-jndi-name>
<connection-factory-jndi-name>CFMDBTest</connection-factory-jndi-name>
<generate-unique-jms-client-id>true</generate-unique-ms-client-id>
</message-driven-descriptor>

 

 

In case of any ┬ęCopyright or missing credits issue please check CopyRights page for faster resolutions.

Leave a Reply