Announcement Announcement Module
Collapse
No announcement yet.
message-driven-channel-adapter + (weblogic).jms.common.JMSSecurityException Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • message-driven-channel-adapter + (weblogic).jms.common.JMSSecurityException

    Hi all,

    I defined a message-driven-channel-adapter for retrieving messages from weblogic container.
    It works well until I don't define on weblogic jms queue a security policy.

    So on my applicationContext.xml
    Code:
        <!-- A default JMS message listener -->
        <jms:message-driven-channel-adapter id="jmsMessageChannelAdapter"
                                            connection-factory="myConnectionFactory"
                                            destination="myQueue"
                                            channel="myListenerChannel"/>
    
        <jee:jndi-lookup id="myConnectionFactory" jndi-name="${connection.factory.jndi.name}">
            <jee:environment>
                java.naming.factory.initial=${java.naming.factory.initial}
                java.naming.provider.url=${java.naming.provider.url}
                java.naming.security.principal=${java.naming.security.principal}
                java.naming.security.credentials=${java.naming.security.credentials}
            </jee:environment>
        </jee:jndi-lookup>
        <jee:jndi-lookup id="myQueue" jndi-name="${queue.jndi.name}">
            <jee:environment>
                java.naming.factory.initial=${java.naming.factory.initial}
                java.naming.provider.url=${java.naming.provider.url}
                java.naming.security.principal=${java.naming.security.principal}
                java.naming.security.credentials=${java.naming.security.credentials}
            </jee:environment>
        </jee:jndi-lookup>
    On weblogic realm I defined my user ${java.naming.security.principal} and the message-driven-channel-adapter works well --> I'm able to retrieve messages from weblogic queue.

    As soon as I add to my weblogic queue a security policy defined as:

    Code:
     Group : Administrators 
    Or
     User : WLS_JMS_USER
    I got below error:

    Code:
    02.mag.2012 13:57:21,925 - (LISTENER SERVICE) (org.springframework.jms.listener.DefaultMessageListenerContainer#0-1) [WARN  ]-[DefaultMessageListenerContainer    (819 )] - Setup of JMS message listener invoker failed for destination 'mb0_sb_queue!WL.mb0_sb_queue' - trying to recover.
    Cause: Access denied to resource: type=<jms>, application=mb0_sb_queue, destinationType=queue, resource=WL.mb0_sb_queue, action=receive
    weblogic.jms.common.JMSSecurityException: Access denied to resource: type=<jms>, application=mb0_sb_queue, destinationType=queue, resource=WL.mb0_sb_queue, action=receive
            at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
            at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:45)
            at weblogic.jms.client.JMSSession.consumerCreate(JMSSession.java:2914)
            at weblogic.jms.client.JMSSession.setupConsumer(JMSSession.java:2687)
            at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2628)
            at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2608)
            at weblogic.jms.client.WLSessionImpl.createConsumer(WLSessionImpl.java:880)
            at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:501)
            at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:223)
            at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1082)
            at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
            at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1051)
            at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:948)
            at java.lang.Thread.run(Thread.java:619)
    But on my applicationContext.xml at "jndi-lookup" stuff definition I added:

    Code:
                java.naming.security.principal=${java.naming.security.principal}
                java.naming.security.credentials=${java.naming.security.credentials}
    I'm trying to understand what is missing.

    Do you have any hint ?

    Thanks and regards
    nuvola

  • #2
    java.naming.security.* are authentication properties for the naming service (JNDI); they have nothing to do with objects returned therefrom; just whether access to the repository is allowed.

    e.g. "Is this user allowed to retrieve this JNDI object"

    The JNDI object is a reference to configuration on the server (JNDI provider) - there is where you need to configure the security properties of the object itself.

    Comment


    • #3
      Hi Gary,

      thanks for the info.

      If I write a simple java jms client as below

      Code:
          // create InitialContext
          Hashtable properties = new Hashtable();
          properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
          properties.put(Context.PROVIDER_URL, url);
          
          properties.put(Context.SECURITY_PRINCIPAL, user);
          properties.put(Context.SECURITY_CREDENTIALS, password);
      	
      	try {
      		ctx = new InitialContext(properties);
      	} catch (Exception e) {
      		System.out.println(e.getMessage());
      	}
      
      ...
         qcf = (QueueConnectionFactory) ctx.lookup(cf);
         qc = qcf.createQueueConnection();
      ...
         message = qsess.createTextMessage();
         message.setText(messageText);
         qsndr.send(message);
      that accesses the same queue with the same user the client works properly (in this case I'm publishing a message instead of consuming it) ... so I'm bit confused that instead I get that error using message-driven-channel-adapter.

      Thanks and regards
      nuvola

      Comment


      • #4
        Interesting; there should be no difference; the Spring JNDI code does exactly the same; are you sure the placeholders are set up correctly?

        Comment


        • #5
          I checked more times my placeholders and they are correct.

          In fact if I try to use a wrong user (I mean not defined on weblogic realm):

          Code:
          java.naming.security.principal=WLS_JMS_USER_         <-- see the last _ character
          java.naming.security.credentials=WLS_JMS_USER
          I got a right exception:

          Code:
          [Root exception is java.lang.SecurityException: User: WLS_JMS_USER_, failed to be authenticated.]
          Below entire stack trace
          Code:
          02.mag.2012 16:22:22,834 - (LISTENER SERVICE) (main) [ERROR ]-[TestContextManager                 (324 )] - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@180f545] to prepare test instance [null(tmp.integration.jms.ListenerTest)]
          java.lang.IllegalStateException: Failed to load ApplicationContext
                  at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
                  at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
                  at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
                  at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
                  at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
                  at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
                  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
                  at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)
                  at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
                  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
                  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
                  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
                  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
                  at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
                  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
                  at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
                  at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
                  at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
                  at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
                  at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
                  at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
                  at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
                  at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
                  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                  at java.lang.reflect.Method.invoke(Method.java:597)
                  at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
                  at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
          Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.jms.listener.DefaultMessageListenerContainer#0': Cannot resolve reference to bean 'connectionFactory' while setting bean property 'connectionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: 
          Error creating bean with name 'connectionFactory': Invocation of init method failed; nested exception is javax.naming.AuthenticationException 
          [Root exception is java.lang.SecurityException: User: WLS_JMS_USER_, failed to be authenticated.]
                  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
                  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
                  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
                  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
                  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
                  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
                  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
                  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
                  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
                  at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)
                  at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
                  at org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228)
                  at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)
                  at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)
                  ... 28 more

          Comment


          • #6
            Hmmm... I don't understand why your hand-coded JNDI lookup works, but you can try wrapping your JNDI connection factory in a UserCredentialsConnectionFactoryAdapter ...

            http://static.springsource.org/sprin...ryAdapter.html

            Comment


            • #7
              Did you also try hard coding all the values, not just the credentials, but also the initial context factory name, URL, destination name etc in the spring config?

              Take the exact values you have in the java client that works for you and paste it here rather than taking it from the properties file. What do you get then?

              Comment


              • #8
                Hi,

                as suggested I tried also to hard coding all the values in my applicationContext.xml file:

                Code:
                    <!-- JMS stuff resolution -->
                    <jee:jndi-lookup id="signbookConnectionFactory" jndi-name="WL.mb0_sb.CF">
                        <jee:environment>
                            java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
                            java.naming.provider.url=t3://bsrpdev0012.dev.b-source.net:7841
                            java.naming.security.principal=WLS_USER
                            java.naming.security.credentials=WLS_USER
                        </jee:environment>
                    </jee:jndi-lookup>
                    <jee:jndi-lookup id="signbookFLQueue" jndi-name="WL.mb0_sb.BU">
                        <jee:environment>
                            java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
                            java.naming.provider.url=t3://bsrpdev0012.dev.b-source.net:7841
                            java.naming.security.principal=WLS_USER
                            java.naming.security.credentials=WLS_USER
                        </jee:environment>
                    </jee:jndi-lookup>
                but the access to the queue fails again

                Code:
                08.mag.2012 16:09:49,311 - (LISTENER SERVICE) (org.springframework.jms.listener.DefaultMessageListenerContainer#0-1) [WARN  ]-[DefaultMessageListenerContainer    (819 )] - 
                Setup of JMS message listener invoker failed for destination 'mb0_sb!WL.mb0_sb.BU' - trying to recover.
                Cause: Access denied to resource: type=<jms>, application=mb0_sb, destinationType=queue, resource=WL.mb0_sb.BU, action=receive
                weblogic.jms.common.JMSSecurityException: Access denied to resource: 
                  type=<jms>, application=mb0_sb, destinationType=queue, resource=WL.mb0_sb.BU, action=receive
                        at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
                        at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:45)
                        at weblogic.jms.client.JMSSession.consumerCreate(JMSSession.java:2914)
                        at weblogic.jms.client.JMSSession.setupConsumer(JMSSession.java:2687)
                        at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2628)
                        at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2608)
                        at weblogic.jms.client.WLSessionImpl.createConsumer(WLSessionImpl.java:880)
                        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:501)
                        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:223)
                        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1082)
                        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
                        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1051)
                        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:948)
                        at java.lang.Thread.run(Thread.java:619)
                And below the access to the same queue by a classic java client (in that case writing to the queue instead of listening) using the same values (not just the credentials, but also the initial context factory name, URL, destination name, etc) and here the access is successfull:

                Code:
                public class JMSClient {
                ...
                  private static final String QCF_NAME   = "WL.mb0_sb.CF";
                  private static final String QUEUE_NAME = "WL.mb0_sb.BU";
                  private static final String WLS_URL    = "t3://bsrpdev0012.dev.b-source.net:7841";
                  private static final String WLS_USER   = "WLS_USER";
                  private static final String WLS_PWD    = "WLS_USER";
                
                ...
                    // create InitialContext
                    Hashtable<String, String> properties = new Hashtable<String, String>();
                    properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                    properties.put(Context.PROVIDER_URL, url);
                    properties.put(Context.SECURITY_PRINCIPAL, user);
                    properties.put(Context.SECURITY_CREDENTIALS, password);
                	
                	try {
                		ctx = new InitialContext(properties);
                	} catch (Exception e) {
                		System.out.println(e.getMessage());
                	}
                    
                    try {
                	  qcf = (QueueConnectionFactory) ctx.lookup(cf);
                      qc = qcf.createQueueConnection();
                
                      qsess = qc.createQueueSession(false, 0);
                      q = (Queue)ctx.lookup(queue);
                      qsndr = qsess.createSender(q);
                      message = qsess.createTextMessage();
                      message.setText(messageText);
                      qsndr.send(message);
                      System.out.println("Sent: " + messageText);
                    } catch(Throwable e) {
                    	System.out.println(e.getMessage());
                    } finally {
                ...
                Any help ss greatly appreciated!!!
                nuvola

                Comment


                • #9
                  In your java example you have these:
                  Code:
                  private static final String QCF_NAME   = "WL.mb0_sb.CF";
                    private static final String QUEUE_NAME = "WL.mb0_sb.BU";
                    private static final String WLS_URL    = "t3://bsrpdev0012.dev.b-source.net:7841";
                    private static final String WLS_USER   = "WLS_USER";
                    private static final String WLS_PWD    = "WLS_USER";
                  but you are not using them anywhere in your code. Am i missing something?

                  Comment


                  • #10
                    Sorry I forgot to attach a piece of code ...

                    Code:
                    ...
                      public static void sendMessage(String messageText) {
                        sendMessage(WLS_URL, WLS_USER, WLS_PWD, QCF_NAME, QUEUE_NAME,
                        messageText);
                      }
                    
                      public static void sendMessage(
                    		  String url, 
                    		  String user, 
                    		  String password,
                    		  String cf, 
                    		  String queue, 
                    		  String messageText)  
                      {
                        // create InitialContext
                        Hashtable<String, String> properties = new Hashtable<String, String>();
                        properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                        properties.put(Context.PROVIDER_URL, url);
                        properties.put(Context.SECURITY_PRINCIPAL, user);
                        properties.put(Context.SECURITY_CREDENTIALS, password);
                    	
                    	try {
                    		ctx = new InitialContext(properties);
                    ...

                    Comment


                    • #11
                      You are sending a message from your standalone client. Can you try creating a javax.jms.MessageConsumer from your standalone app and then try receiving messages from your queue? Does that work?
                      Just trying to eliminate the fact that you just have access to send messages to the queue, that is create a javax.jms.MessageProducer and not consume by creating a javax.jms.MessageConsumer for this queue.
                      Last edited by Amol Nayak; May 8th, 2012, 01:45 PM.

                      Comment


                      • #12
                        I did also that, I mean a classic java client with QueueReceiver and it works as expected:

                        Code:
                        public class JMSReceiver {
                        ...	  
                        	  private static final String QCF_NAME   = "WL.mb0_sb.CF";
                        	  private static final String QUEUE_NAME = "WL.mb0_sb.BU";
                        	  private static final String WLS_URL    = "t3://bsrpdev0012.dev.b-source.net:7841";
                        	  private static final String WLS_USER   = "WLS_USER";
                        	  private static final String WLS_PWD    = "WLS_USER";
                          
                        	  private static final int TIMEOUT = 10*1000;
                        
                        	  public static void main(String[] args) {
                        		    retrieveMessage();
                        		  }
                        
                        	  public static void retrieveMessage()   {
                        	    Hashtable<String, String> properties = new Hashtable<String, String>();
                        	    properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                        	    properties.put(Context.PROVIDER_URL, WLS_URL);
                        	    properties.put(Context.SECURITY_PRINCIPAL, WLS_USER);
                        	    properties.put(Context.SECURITY_CREDENTIALS, WLS_PWD);
                        		
                        		try {
                        			ctx = new InitialContext(properties);
                        		} catch (Exception e) {
                        			System.out.println(e.getMessage());
                        		}
                        	    
                        	    try {
                                              qcf = (QueueConnectionFactory) ctx.lookup(QCF_NAME);
                        	      qc = qcf.createQueueConnection();
                        	      qsess = qc.createQueueSession(false, 0);
                        	      q = (Queue)ctx.lookup(QUEUE_NAME);
                                              qrcvr = qsess.createReceiver(q);
                                              qc.start();
                                              message = qrcvr.receive(TIMEOUT);
                        	      System.out.println("received: " + message.toString());
                        	    } catch(Throwable e) {
                        	    	System.out.println(e.getMessage());
                        	    } finally {
                        	    	try {
                        	    		qrcvr.close();
                        		    	qsess.close();
                        		    	qc.close();
                        	    	} catch (Exception e2) {
                        	    		e2.printStackTrace();
                        	    	}
                        	    }
                        	  }
                        }
                        In order to find out a solution some days ago I posted the same issue on OTN Discussion Forum and today I've just got:

                        Code:
                        Spring JMS and WebLogic JMS have given a tough time to lot of us. 
                        
                        When Spring looks up the connection factory & queue, it does so using the proper credentials, but since the actual publish/consume takes place in a different thread, the security information doesn't get passed on to that new thread.
                        
                        There is apparently a flag called "exposeAccessContext" that you can set on the connection factory & queue in Spring to ensure that the security credentials are available to other threads.
                        I will try with that. Do you know that flag ?

                        Comment


                        • #13
                          So I've added the flag expose-access-context on the connection factory & queue in Spring:

                          Code:
                              <jee:jndi-lookup id="connectionFactory" jndi-name="WL.mb0_sb.CF" expose-access-context="true">
                                  <jee:environment>
                                      java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
                                      java.naming.provider.url=t3://bsrpdev0012.dev.b-source.net:7841
                                      java.naming.security.principal=...
                                      java.naming.security.credentials=...
                                  </jee:environment>
                              </jee:jndi-lookup>
                              <jee:jndi-lookup id="signbookFLQueue" jndi-name="WL.mb0_sb.BU" expose-access-context="true">
                                  <jee:environment>
                                      java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
                                      java.naming.provider.url=t3://bsrpdev0012.dev.b-source.net:7841
                                      java.naming.security.principal=...
                                      java.naming.security.credentials=...
                                  </jee:environment>
                              </jee:jndi-lookup>
                          But now I got that error:

                          Code:
                          09.mag.2012 09:59:14,020 - (LISTENER SERVICE) (org.springframework.jms.listener.DefaultMessageListenerContainer#0-1) [WARN  ]-
                          [DefaultMessageListenerContainer    (819 )] - Setup of JMS message listener invoker failed for destination 'mb0_sb!WL.mb0_sb.BU' - 
                          trying to recover. Cause: [JMSClientExceptions:055142]Foreign destination, mb0_sb!WL.mb0_sb.BU
                          weblogic.jms.common.InvalidDestinationException: [JMSClientExceptions:055142]Foreign destination, mb0_sb!WL.mb0_sb.BU
                                  at weblogic.jms.common.Destination.checkDestinationType(Destination.java:105)
                                  at weblogic.jms.client.JMSSession.setupConsumer(JMSSession.java:2657)
                                  at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2628)
                                  at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2608)
                                  at weblogic.jms.client.WLSessionImpl.createConsumer(WLSessionImpl.java:880)
                                  at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:501)
                                  at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:223)
                                  at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1082)
                                  at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
                                  at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1051)
                                  at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:948)
                                  at java.lang.Thread.run(Thread.java:619)
                          09.mag.2012 09:59:14,036 - (LISTENER SERVICE) (org.springframework.jms.listener.DefaultMessageListenerContainer#0-1) [DEBUG ]-[DefaultMessageListenerContainer$AsyncMessageListenerInvoker(997)] - Lowered scheduled invoker count: 0

                          Comment

                          Working...
                          X