`

JMS - javax.jms.IllegalStateException in JBOSS问题之解决

    博客分类:
  • Java
阅读更多

在jms中的代码如下:

   

java 代码
  1. private void registerSubscriber(JMSTopicMetaData jmsMetaData) throws Exception {   
  2.     TopicConnectionFactory topicCntFact = jmsMetaData   
  3.             .getTopicConnectionFactory();   
  4.     Topic topic = jmsMetaData.getTopic();   
  5.        
  6.     // 将自己作为一个Subscriber向Topic注册。   
  7.     TopicConnection cnt = topicCntFact.createTopicConnection();   
  8.     cnt.setExceptionListener(new TopicConnectionExceptionListenerImpl());   
  9.     TopicSession session = cnt.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);   
  10.     TopicSubscriber subscriber = session.createSubscriber(topic);   
  11.     subscriber.setMessageListener(this);   
  12.     cnt.start();   
  13. }  

在 subscriber.setMessageListener(this);代码执行过程中抛出以下异常。(用的服务器是jboss4.0.5GA,在weblogic8.1)

上面没有错误出现。

java 代码
  1. 15:21:58,193 ERROR [STDERR] javax.jms.IllegalStateException: This method is not applicable inside the application server. See the J2EE spec, e.g.   
  2. J2EE1.4 Section 6.6  
  3. 15:21:58,193 ERROR [STDERR] javax.jms.IllegalStateException: This method is not applicable inside the application server. See the J2EE spec, e.g.   
  4. J2EE1.4 Section 6.6  
  5. 15:21:58,193 ERROR [STDERR] at org.jboss.resource.adapter.jms.JmsSession.checkStrict(JmsSession.java:542)   
  6. 15:21:58,193 ERROR [STDERR] at org.jboss.resource.adapter.jms.JmsMessageConsumer.setMessageListener(JmsMessageConsumer.java:136)   
  7. 15:21:58,193 ERROR [STDERR] at dk.itu.projekt.jms.SubscriptionHelper.<init>(Unknown Source)   
  8. 15:21:58,193 ERROR [STDERR] at dk.itu.projekt.jms.MessageReceiver.recieveMessage(Unknown Source)   
  9. 15:21:58,193 ERROR [STDERR] at dk.itu.projekt.gui.servlets.EmployeeServlet.service(Unknown Source)   
  10. 15:21:58,193 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)   
  11. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)   
  12. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)   
  13. 15:21:58,193 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)   
  14. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)   
  15. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)   
  16. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)   
  17. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)   
  18. 15:21:58,193 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)   
  19. 15:21:58,193 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)   
  20. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)   
  21. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)   
  22. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)   
  23. 15:21:58,193 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)   
  24. 15:21:58,193 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)   
  25. 15:21:58,193 ERROR [STDERR] at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:   
  26. 664)   
  27. 15:21:58,193 ERROR [STDERR] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)   
  28. 15:21:58,193 ERROR [STDERR] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)   
  29. 15:21:58,193 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)   

找了半天才在jboss的论坛上发现以下解决办法:

java 代码
  1. change the jms-ds.xml file to look like this:   
  2.   
  3. <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->   
  4. <tx-connection-factory>   
  5. <jndi-name>JmsXA</jndi-name>   
  6. <xa-transaction/>   
  7. <rar-name>jms-ra.rar</rar-name>   
  8. <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>   
  9. <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>   
  10. <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>   
  11. <config-property name="Strict" type="java.lang.Boolean">false</config-property>   
  12. <max-pool-size>20</max-pool-size>   
  13. <security-domain-and-application>JmsXARealm</security-domain-and-application>   
  14. </tx-connection-factory>   
  15.   
  16. The <config-property> for Strict is what you need to add. This will let JBoss grant access to the Queue ConnectionFactory to your servlet even though the J2EE spec doesn't require JBoss to do so. Normally JMS ConnectionFactories are only accessible from the EJB container.   
在jms-ds.xml文件中增加<config-property name="Strict" type="java.lang.Boolean">false</config-property>。
分享到:
评论

相关推荐

    javax.jms-1.1.jar

    `javax.jms-1.1.jar` 是一个Java Message Service(JMS)的API库,它属于Java标准版(Java Standard Edition, Java SE)的一部分。JMS是Java平台上的一个规范,用于在分布式环境中进行异步消息传递。这个库主要用于...

    javax.servlet-api-3.1.0.jar javax.el-api-2.2.4.jar javax.el-2.2.4.jar

    在IT行业中,尤其是在Java Web开发领域,`javax.servlet-api`和`javax.el`库是至关重要的组件。这些库主要用于实现Servlet规范和表达式语言(EL)功能,它们为开发人员提供了与服务器交互以及处理HTTP请求的能力。...

    javax.jms-1.1.jar.7z

    内含javax.jms-1.1.jar 安装包下载以及Maven手动安装命令 Maven官方仓库下载不下来资源,只能手动安装 &lt;!-- https://mvnrepository.com/artifact/javax.jms/jms --&gt; &lt;groupId&gt;javax.jms &lt;artifactId&gt;jms ...

    jms-1.1.jar(jms工具jar包)

    在实际应用中,`javax.jms-1.1.jar` 提供了JMS API的实现,开发人员可以使用这些API创建消息、连接到消息代理、创建生产者和消费者,以及进行消息的发送和接收。例如,使用`ConnectionFactory`创建连接工厂,然后...

    javax包下的javax.jms.jar及servlet-api.jar

    这里我们关注的是两个特定的JAR文件:`javax.jms.jar`和`servlet-api.jar`,它们分别与Java消息服务(Java Message Service,JMS)和Java Servlet API相关。 **Java消息服务(JMS)**是Java平台上的一个标准接口,...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

    javax.jms.jar下载

    javax.jms.IllegalStateException.class javax.jms.InvalidClientIDException.class javax.jms.InvalidDestinationException.class javax.jms.InvalidSelectorException.class javax.jms.JMSException.class javax....

    javax.jms.jar

    javax.jms.IllegalStateException.class javax.jms.JMSSecurityException.class javax.jms.ResourceAllocationException.class javax.jms.TransactionInProgressException.class javax.jms....

    javax.servlet-3.0.0.v201112011016-API文档-中英对照版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

    javax.el-api.jar/javax.el.jar

    `javax.el-api.jar`和`javax.el.jar`是与EL表达式紧密相关的两个核心库文件。 `javax.el-api.jar`是Java EL API的实现,包含了处理和解析EL表达式的接口和类。这个库文件定义了EL表达式的语法规则、解析器、表达式...

    javax.servlet-api-3.1.0.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-3.1.0.jar

    在Java Web开发中,`javax.servlet-api-3.1.0.jar`是一个至关重要的组件,它代表了Servlet API的3.1.0版本,是实现服务器端动态网页处理的核心库。Servlet API是Java EE规范的一部分,由Java Community Process (JCP...

    jms-1.1.jar

    《JMS 1.1.jar:Java消息服务与Maven的深度解析》 ...当遇到Maven下载问题时,手动将其放入本地仓库是解决问题的有效方法。理解和掌握JMS原理及操作,对于提升Java应用的稳定性和扩展性至关重要。

    javax.mail-1.4.4.jar

    通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart...

    javax.ws.rs-api-2.0.1-API文档-中文版.zip

    赠送jar包:javax.ws.rs-api-2.0.1.jar; 赠送原API文档:javax.ws.rs-api-2.0.1-javadoc.jar; 赠送源代码:javax.ws.rs-api-2.0.1-sources.jar; 赠送Maven依赖信息文件:javax.ws.rs-api-2.0.1.pom; 包含翻译后...

    javax.mail-1.6.2-API文档-中英对照版.zip

    赠送jar包:javax.mail-1.6.2.jar; 赠送原API文档:javax.mail-1.6.2-javadoc.jar; 赠送源代码:javax.mail-1.6.2-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.6.2.pom; 包含翻译后的API文档:javax.mail...

    javax.ws.rs-api-2.0.jar

    javax.ws.rs-api-2.0.jar

    javax.servlet-api-3.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.el-api-3.0.0.jar

    springboot 打war部署到apache-tomcat-7.0.69中启动报错:java.lang.NoClassDefFoundError: javax/el/ELManager ... 下载javax.el-api-3.0.0.jar,放到 tomcat/lib包下可以解决,原来的el-api.jar版本较低

    javax.servlet.jsp.jstl-api-1.2.1.jar

    javax.servlet.jsp.jstl-api-1.2.1.jar

Global site tag (gtag.js) - Google Analytics