Hi, 

This is the problem: when I try to receive from the remote queue the first time 
and my principal 
is not in the authentication cache of the remote server,  I get 
JMSSecurityException.  
At the same time authentication does happen. The principal shows up in the 
authentication cache 
and next time receive works. 

Here are some details.

Remote server:
JBoss 4.2.2 + JBM 1.4.0.SP3; has a queue deployed on it; the messaging service 
is protected 
by custom security module which authenticates against the application database.

Local server:
JBoss 4.2.2 + JBM 1.4.0.SP3; has JMS JCA adopter configured. Receiver is an 
MBean. 
The code is essentially the following:

// Get factory from local <tx-connection-factory> via JNDI
Connection c = factory.createConnection(user, pass);
Session session = conn.createSession(true, 0);
MessageConsumer consumer = session.createConsumer(queue,                
jmsCtx.getSelector());

CreateSession call throws the exception in the situation described above. 
Interesting detail is that if I put a break point 
and wait for a few seconds before executing createSession: it works. It feels 
like a race condition: 
createConnection triggers authentication but does not block.

Custom JAAS login module mentioned above pretty simple and successfully used 
for web apps and EJB security.

Any help / thoughts will be appreciated.

org.jboss.resource.JBossResourceException: Unable to setup connection; - nested 
throwable: (javax.jms.JMSSecurityException: User bus-sys-user is NOT 
authenticated)
        at 
org.jboss.resource.adapter.jms.JmsManagedConnection.setup(JmsManagedConnection.java:778)
        at 
org.jboss.resource.adapter.jms.JmsManagedConnection.(JmsManagedConnection.java:184)
        at 
org.jboss.resource.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConnectionFactory.java:106)
        at 
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:577)
        at 
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262)
        at 
org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500)
        at 
org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:341)
        at 
org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:315)
        at 
org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:396)
        at 
org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
        at 
org.jboss.resource.adapter.jms.JmsSessionFactoryImpl.allocateConnection(JmsSessionFactoryImpl.java:389)
        at 
org.jboss.resource.adapter.jms.JmsSessionFactoryImpl.createSession(JmsSessionFactoryImpl.java:369)
        at 
com.teoco.common.bus.impl.jms.JmsListener.receive(JmsListener.java:123)
        at 
com.teoco.common.bus.impl.jms.JmsListener.receiveInTransaction(JmsListener.java:97)
        at com.teoco.common.bus.impl.jms.JmsListener.run(JmsListener.java:74)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.jms.JMSSecurityException: User bus-sys-user is NOT 
authenticated
        at 
org.jboss.jms.server.security.SecurityMetadataStore.authenticate(SecurityMetadataStore.java:202)
        at 
org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegateInternal(ServerConnectionFactoryEndpoint.java:222)
        at 
org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegate(ServerConnectionFactoryEndpoint.java:162)
        at 
org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.org$jboss$jms$server$endpoint$advised$ConnectionFactoryAdvised$createConnectionDelegate$aop(ConnectionFactoryAdvised.java:108)
        at 
org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.createConnectionDelegate(ConnectionFactoryAdvised.java)
        at 
org.jboss.jms.wireformat.ConnectionFactoryCreateConnectionDelegateRequest.serverInvoke(ConnectionFactoryCreateConnectionDelegateRequest.java:91)
        at 
org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
        at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)
        at 
org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573)
        at 
org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387)
        at 
org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)
        at 
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)
        at org.jboss.remoting.Client.invoke(Client.java:1634)
        at org.jboss.remoting.Client.invoke(Client.java:548)
        at 
org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:167)
        at 
org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
        at 
org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:83)
        at 
org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
        at 
org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
        at 
org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
        at 
org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:205)
        at 
org.jboss.jms.client.JBossConnectionFactory.createXAConnection(JBossConnectionFactory.java:128)
        at 
org.jboss.jms.ConnectionFactoryHelper.createConnection(ConnectionFactoryHelper.java:78)
        at 
org.jboss.resource.adapter.jms.JmsManagedConnection.setup(JmsManagedConnection.java:743)
        ... 15 more

If the connection is already in the pool, and I flush authentication cache - it 
behaves similar but breaks on creatConsumer()


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4153083#4153083

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4153083
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to