Hi Nigel,
Was running your JMS20Demo application as it is using GF embedded Open MQ
broker and it was working perfectly.
Then I took latest available Open MQ 5.0 bundle, build it and run locally
on custom port.
I've changed deployment descriptor for JMSConnectionFactory to point on
this separately running Open MQ instance.
However JMS20Demo app's behavior becomes strange:
Among all sender/receiver cases implemented there only *Using the JMS 2.0
simplified API and injection to send a message (JavaEESenderNewCDI) *seams
work. All other cases don't produce errors, but no messages really sent or
received.
I thought that GF b56 build might not work with latest available Open MQ
5.0 distribution. I took latest available GF b60 build to repeat experiment.
But JMS20Demo app seams not working with GF b60 build at all. Using either
embedded Open MQ broker or separate instance built from latest available
sources among all sender cases again works only *Using the JMS 2.0
simplified API and injection to send a message (JavaEESenderNewCDI)*.
But first receive example *Using the JMS 1.1-style API to receive a message
(JavaEESyncReceiverOld)* crashes with error:
[#|2012-10-28T01:54:53.235+0300|SEVERE|44.0|beans.JavaEESenderOld|_ThreadID=85;_ThreadName=http-listener-1(1);_TimeMillis=1351378493235;_LevelValue=1000;|com.sun.messaging.jms.JMSException:
MQRA:CFA:allocation failure:createConnection:Error in allocating a
connection. Cause: MQJMSRA_MC4001: constructor:Aborting:JMSException on
createConnection=[C4060]: Login failed: user=guest,
broker=localhost:7777(57373), error code: C4060
at
com.sun.messaging.jms.ra.ConnectionFactoryAdapter._allocateConnection(ConnectionFactoryAdapter.java:213)
at
com.sun.messaging.jms.ra.ConnectionFactoryAdapter.createConnection(ConnectionFactoryAdapter.java:170)
at
com.sun.messaging.jms.ra.ConnectionFactoryAdapter.createConnection(ConnectionFactoryAdapter.java:152)
at beans.JavaEESenderOld.sendMessageOld(JavaEESenderOld.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1061)
at
org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1133)
at
com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4696)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:624)
at
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:796)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:576)
at
org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:857)
at
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:796)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:576)
at
com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at
com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:857)
at
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:796)
at
com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
at
com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4668)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4656)
at
com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:213)
at
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy167.sendMessageOld(Unknown Source)
at
beans.__EJB31_Generated__JavaEESenderOld__Intf____Bean__.sendMessageOld(Unknown
Source)
at servlets.Servlet1.handle(Servlet1.java:165)
at servlets.Servlet1.processRequest(Servlet1.java:113)
at servlets.Servlet1.doGet(Servlet1.java:134)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1593)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:285)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:665)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:604)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:337)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:240)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:172)
at
org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:164)
at
org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:175)
at
org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:265)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:134)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at
org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at
org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:781)
at
org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:578)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:558)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.resource.spi.ResourceAllocationException: Error in
allocating a connection. Cause: MQJMSRA_MC4001:
constructor:Aborting:JMSException on createConnection=[C4060]: Login
failed: user=guest, broker=localhost:7777(57373), error code: C4060
at
com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:312)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:195)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:170)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
at
com.sun.messaging.jms.ra.ConnectionFactoryAdapter._allocateConnection(ConnectionFactoryAdapter.java:211)
... 66 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException:
MQJMSRA_MC4001: constructor:Aborting:JMSException on
createConnection=[C4060]: Login failed: user=guest,
broker=localhost:7777(57373), error code: C4060
at
com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:103)
at
com.sun.enterprise.resource.pool.ConnectionPool.addResource(ConnectionPool.java:282)
at
com.sun.enterprise.resource.pool.ConnectionPool.createResourceAndAddToPool(ConnectionPool.java:1512)
at
com.sun.enterprise.resource.pool.ConnectionPool.createResources(ConnectionPool.java:944)
at
com.sun.enterprise.resource.pool.ConnectionPool.initPool(ConnectionPool.java:230)
at
com.sun.enterprise.resource.pool.ConnectionPool.internalGetResource(ConnectionPool.java:511)
at
com.sun.enterprise.resource.pool.ConnectionPool.getResource(ConnectionPool.java:381)
at
com.sun.enterprise.resource.pool.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:245)
at
com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:170)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:343)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:306)
... 70 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException:
MQJMSRA_MC4001: constructor:Aborting:JMSException on
createConnection=[C4060]: Login failed: user=guest,
broker=localhost:7777(57373), error code: C4060
at
com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:924)
at
com.sun.enterprise.resource.pool.ConnectionPool.createResource(ConnectionPool.java:1189)
at
com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:98)
... 80 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException:
MQJMSRA_MC4001: constructor:Aborting:JMSException on
createConnection=[C4060]: Login failed: user=guest,
broker=localhost:7777(57373), error code: C4060
at
com.sun.enterprise.resource.allocator.NoTxConnectorAllocator.createResource(NoTxConnectorAllocator.java:148)
at
com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:907)
... 82 more
Caused by: javax.resource.spi.ResourceAdapterInternalException:
MQJMSRA_MC4001: constructor:Aborting:JMSException on
createConnection=[C4060]: Login failed: user=guest,
broker=localhost:7777(57373), error code: C4060
at
com.sun.messaging.jms.ra.ManagedConnection.<init>(ManagedConnection.java:201)
at
com.sun.messaging.jms.ra.ManagedConnectionFactory.createManagedConnection(ManagedConnectionFactory.java:226)
at
com.sun.enterprise.resource.allocator.NoTxConnectorAllocator.createResource(NoTxConnectorAllocator.java:128)
... 83 more
Caused by: com.sun.messaging.jms.JMSSecurityException: [C4060]: Login
failed: user=guest, broker=localhost:7777(57373)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.authenticate(ProtocolHandler.java:1137)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.hello(ProtocolHandler.java:1044)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.hello(ProtocolHandler.java:935)
at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.hello(ConnectionImpl.java:588)
at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.openConnection(ConnectionImpl.java:2503)
at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.init(ConnectionImpl.java:1154)
at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.<init>(ConnectionImpl.java:466)
at
com.sun.messaging.jmq.jmsclient.UnifiedConnectionImpl.<init>(UnifiedConnectionImpl.java:66)
at
com.sun.messaging.jmq.jmsclient.XAConnectionImpl.<init>(XAConnectionImpl.java:64)
at
com.sun.messaging.XAConnectionFactory.createXAConnection(XAConnectionFactory.java:97)
at
com.sun.messaging.jms.ra.ManagedConnection.<init>(ManagedConnection.java:197)
... 85 more
|#]
It seams in latest GF it has been changed not only default GF HTTP listener
port (from 8080 to 26682) and embedded Open MQ default port (from 7676 to
26678)
but also some default auth policy for JMS clients...
Another thing which is not really clear for me. When I'm using either
embedded Open MQ broker or separate broker instance with same GF server I
can see old messages in queues. When I've moved to new GF instance I've got
fresh new clean queues. It seams that messages are stored not on broker
side but on GF side.
This is also strange for me.
I'm a bit confused by this strange behaviour. You might say all is ok,
cause I just missed smth. Or probably there are some bugs.
Please advice. I've put in CC GF mailing list as well. Probably it is more
question to GF experts...
Thank you,
Oleg