Pages

Saturday, November 23, 2013

weblogic.jms.common.JMSException: No failover destination.


Problem: The Weblogic throws  weblogic.jms.common.JMSException: No failover destination while provision or de-provision the user in Oracle Identity Manager in the Clustered environment.  The exception details as follows:


Error:

oracle.iam.identity.exception.UserModifyException: Uncategorized exception occured during JMS processing; nested exception is weblogic.jms.common.JMSException: No failover destination.
        at oracle.iam.identity.usermgmt.impl.UserManagerImpl.modify(UserManagerImpl.java:943)
        at oracle.iam.identity.usermgmt.api.UserManagerEJB.modifyx(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor2327.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
        at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
        at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy401.modifyx(Unknown Source)
        at oracle.iam.identity.usermgmt.api.UserManager_nimav7_UserManagerRemoteImpl.__WL_invoke(Unknown Source)
        at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
        at oracle.iam.identity.usermgmt.api.UserManager_nimav7_UserManagerRemoteImpl.modifyx(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor8553.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
        at $Proxy194.modifyx(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor2326.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
        at $Proxy399.modifyx(Unknown Source)
        at oracle.iam.identity.usermgmt.api.UserManagerDelegate.modify(Unknown Source)
        at edu.sfsu.trusted.db.recon.oim.SfsuTrustedReconOIMCrudDao.updateAttributes(Unknown Source)
        at edu.sfsu.trusted.db.recon.oim.SfsuTrustedReconOIMCrudDao.createUser(Unknown Source)
        at edu.sfsu.trusted.db.recon.SfsuTrustedReconWrapper.processRecord(Unknown Source)
        at edu.sfsu.trusted.db.recon.SfsuTrustedReconWrapper.processRecon(Unknown Source)
        at edu.sfsu.trusted.db.recon.SfsuTrustedDBReconciliation.execute(Unknown Source)
        at oracle.iam.scheduler.vo.TaskSupport.executeJob(TaskSupport.java:145)
        at sun.reflect.GeneratedMethodAccessor6935.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at oracle.iam.scheduler.impl.quartz.QuartzJob.execute(QuartzJob.java:196)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: weblogic.jms.common.JMSException: No failover destination.
        at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
        at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncTran(DispatcherAdapter.java:53)
        at weblogic.jms.client.JMSProducer.toFEProducer(JMSProducer.java:1289)
        at weblogic.jms.client.JMSProducer.deliveryInternal(JMSProducer.java:796)
        at weblogic.jms.client.JMSProducer.sendInternal(JMSProducer.java:541)
        at weblogic.jms.client.JMSProducer.sendWithListener(JMSProducer.java:394)
        at weblogic.jms.client.JMSProducer.send(JMSProducer.java:384)
        at weblogic.jms.client.WLProducerImpl.send(WLProducerImpl.java:970)
        at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:597)
        at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:574)
        at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:541)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471)
        at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)
        at oracle.iam.platform.async.messaging.MessageSenderImpl.send(MessageSenderImpl.java:75)
        at oracle.iam.platform.async.messaging.TaskRouter.route(TaskRouter.java:78)
        at oracle.iam.platform.async.messaging.MessagingExecutionService.submit(MessagingExecutionService.java:43)
        at oracle.iam.platform.async.impl.AsyncServiceImpl.submit(AsyncServiceImpl.java:75)
        at 


Cause:

1. OIM Adapter Time Out issue.

Symptoms:

1. Weblogic OIM Servers showed the Warning message in the Web Logic Console Server Pannel.
2. OIM throws SQL exceptions in the OIM Server log due to un available of the SQL jdbc connections.
3. Provision the user in target resource, but that resource info not available in the OIM Repository.
 
Solution:

Set the timeout functionality or Implement the Timeout functionality in the OIM resource adapters in the process task definition. For example resource adapters are Create User, Delete User, First Name Updated etc.