java.lang.IllegalAccessError: tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195

Spring JIRA | John Baker | 9 years ago
  1. 0

    [SPR-4720] DefaultMessageListenerContainer failover to work with Weblogic JMS and security credentials - Spring JIRA

    spring.io | 1 year ago
    java.lang.IllegalAccessError: tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195
  2. 0

    [SPR-4720] DefaultMessageListenerContainer failover to work with Weblogic JMS and security credentials - Spring JIRA

    spring.io | 1 year ago
    java.lang.IllegalAccessError: tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195
  3. 0

    [#SPR-4720] DefaultMessageListenerContainer failover to work with Weblogic JMS and security credentials

    spring.io | 2 months ago
    java.lang.IllegalAccessError: tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195
  4. Speed up your debug routine!

    Automated exception search integrated into your IDE

  5. 0

    Weblogic has a strange 'feature' where by an InitialContext created in one thread can not be used in another when security credentials have been provided. I personally think this design is a little silly, but BEA are unlikely to listen. The default message listener container does not recover a connection when it's failed, and the exception suggests it's due to this 'feature'. Here is the exception: java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[eventfetcher] at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:195) at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338) at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252) at weblogic.jndi.internal.ServerNamingNode_921_WLStub.lookup(Unknown Source) at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:374) at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:362) at weblogic.rmi.cluster.BasicReplicaHandler.refreshReplicaList(BasicReplicaHandler.java:506) at weblogic.rmi.cluster.BasicReplicaHandler.failOver(BasicReplicaHandler.java:206) at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:257) at weblogic.jms.frontend.FEConnectionFactoryImpl_922_WLStub.connectionCreateRequest(Unknown Source) at weblogic.jms.client.JMSConnectionFactory.setupJMSConnection(JMSConnectionFactory.java:238) at weblogic.jms.client.JMSConnectionFactory.createConnectionInternal(JMSConnectionFactory.java:299) at weblogic.jms.client.JMSConnectionFactory.createConnection(JMSConnectionFactory.java:205) at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184) at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContaine r.java:401) at com.db.websso.jms.WeblogicMessageListenerContainer.createSharedConnection(WeblogicMessageListenerContainer.java:41 ) at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContain er.java:386) at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageLi stenerContainer.java:782) at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageLi stenerContainer.java:764) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageLis tenerContainer.java:892) I had implemented a hack to partly solve the problem by extending the listener, but it's not completely effective. The result is that some threads seem to recover, while others continue to fail (and I can not currently explain why, given my hack re-creates the JNDI in the current thread!). Here's the hack: protected Connection createSharedConnection() throws JMSException { // Associate JNDI variables (user and password) with this thread for the benefit // of the WL drivers. try { InitialContext ic = new InitialContext(jndiTemplate.getEnvironment()); } catch (NamingException e) { logger.warn(e.getMessage()); } return super.createSharedConnection(); } It's not very nice and it would be better to find a long term decent solution to this problem. Until a solution is in place, this object (and other JMS functionality, such as multiple threads and the JmsTemplate) will fail to work correctly with Weblogic. I'm happy to test possible solutions if someone with indepth experience of the Spring JMS code can put forward suggestions. Thanks, John

    Spring JIRA | 9 years ago | John Baker
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jms.core.connectionFactory.y' defined in class path resource [jms-core-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalAccessError: tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195

    1 unregistered visitors
    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    Root Cause Analysis

    1. java.lang.IllegalAccessError

      tried to access class weblogic/jms/client/Reconnectable from class weblogic/jms/client/$Proxy195

      at java.lang.reflect.Proxy.defineClass0()
    2. Java RT
      Proxy.newProxyInstance
      1. java.lang.reflect.Proxy.defineClass0(Native Method)
      2. java.lang.reflect.Proxy.getProxyClass(Proxy.java:504)
      3. java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
      3 frames
    3. Spring AOP
      ProxyFactory.getProxy
      1. org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:117)
      2. org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
      2 frames