JMS and HTTPServerILService
skidvd Aug 22, 2004 8:53 PMHello:
I am trying to get JMS working across the HTTPServerILService. I have
been reading the Admin and Devel Guide as well as the "Messaging, JMS
and JBossMQ" forum and http://jboss.org/wiki/Wiki.jsp?page=ConfigHTTPIL
as references. I feel that I am fairly close to getting this to work,
but I am also still not successful. My JMS client pubs successfully,
but I get the following exception on the server side:
17:25:43,743 ERROR [JMSContainerInvoker] Exception in JMSCI message
listener
java.lang.NullPointerException
at
org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:446)
at
org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:372)
at org.jboss.ejb.Container.invoke(Container.java:723)
at
org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:914)
at
org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1208)
at
org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:276)
at
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:871)
at
org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
at org.jboss.mq.SpySession.run(SpySession.java:347)
at
org.jboss.jms.asf.StdServerSession.run0(StdServerSession.java:200)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
at java.lang.Thread.run(Thread.java:534)
I have added the following additional loggers to the
$JBOSS_DIST/server/default/conf.log4j.xml:
<category name="org.jboss.mq"> <priority value="DEBUG"/> </category> <category name="org.jboss.jms"> <priority value="DEBUG"/> </category> <category name="org.jboss.ejb.plugins.jms"> <priority value="DEBUG"/> </category> <category name="org.jboss.ejb.MessageDrivenContainer"> <priority value="DEBUG"/> </category>
However, they did not seem to produce any additional output relative to
the above exception.
The other relevant files are as follows:
$JBOSS_DIST/server/default/deploy/jms/jbossmq-httpil.sar/META-INF/jboss-service.xml:
<server> <mbean code="org.jboss.mq.il.http.HTTPServerILService" name="jboss.mq:service=InvocationLayer,type=HTTP"> <depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends> <depends>jboss.web:service=WebServer</depends> <attribute name="ConnectionFactoryJNDIRef">HTTPConnectionFactory</attribute> <attribute name="XAConnectionFactoryJNDIRef">HTTPXAConnectionFactory</attribute> <attribute name="PingPeriod">0</attribute> <attribute name="TimeOut">60</attribute> <attribute name="RestInterval">0</attribute> <attribute name="URLPrefix">https://</attribute> <attribute name="URLSuffix">:8433/HTTPServerILServlet</attribute> <!-- <attribute name="UseHostName">true</attribute> --> <attribute name="UseHostName">false</attribute> </mbean> </server>
$JBOSS_DIST/server/default/conf/standardjboss.xml additions:
<!-- A custom invoker for JMS/HTTPs --> <invoker-proxy-binding> <name>message-driven-bean-https</name> <invoker-mbean> jboss.mq:service=InvocationLayer,type=HTTP </invoker-mbean> <!-- <invoker-mbean>default</invoker-mbean> --> <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> <proxy-factory-config> <JMSProviderAdapterJNDI>DefaultJMSProvider</JMSProviderAdapterJNDI> <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI> <!-- WARN: Don't set this to zero until a bug in the pooled executor is fixed --> <MinimumSize>1</MinimumSize> <MaximumSize>15</MaximumSize> <KeepAliveMillis>30000</KeepAliveMillis> <MaxMessages>1</MaxMessages> <MDBConfig> <ReconnectIntervalSec>10</ReconnectIntervalSec> <DLQConfig> <DestinationQueue>queue/DLQ</DestinationQueue> <MaxTimesRedelivered>10</MaxTimesRedelivered> <TimeToLive>0</TimeToLive> </DLQConfig> </MDBConfig> </proxy-factory-config> </invoker-proxy-binding> <container-configuration> <container-name>HTTPS Message Driven Bean</container-name> <call-logging>true</call-logging> <invoker-proxy-binding-name>message-driven-bean-https</invoker-proxy-binding-name> <instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool> <instance-cache></instance-cache> <persistence-manager></persistence-manager> <container-pool-conf> <MaximumSize>100</MaximumSize> </container-pool-conf> </container-configuration> The MDB entry in the ejb-jar.xml deployment descriptor is: <message-driven> <ejb-name>ResultsBean</ejb-name> <ejb-class>com.ensuren.ose.server.results.DiscoveryResultsBean</ejb-class> <transaction-type>Container</transaction-type> <message-selector></message-selector> <message-driven-destination> <destination-type>javax.jms.Topic</destination-type> <subscription-durability>NonDurable</subscription-durability> </message-driven-destination> </message-driven>
The MDB entry in the jboss.xml deployment descriptor is:
<message-driven> <ejb-name>ResultsBean</ejb-name> <configuration-name>HTTPS Message Driven Bean</configuration-name> <destination-jndi-name>topic/discoveryResults</destination-jndi-name> </message-driven>
I am using jboss-3.2.5_tomcat-5.0.26 and the MDB in question works
perfectly until I attempt to change to using the HTTPIL - then the pub
client is still fine (i.e. no exceptions), but I get the previously
mentioned exception on the server side.
Finally, the :8443 context is defined correctly in the Tomcat instance
and is functioning just fine for other https:// requests including the
JNDI and EJB invokers. I'm sure I am missing something simple or making
a silly mistake somewhere, but I cannot seem to locate it from any of
the documentation that I have been reading. I'd appreciate any and all
help that you can provide.
Thanks!