jsf2+spring3+jpa 在jboss 6.1.0上的JMS配置遇到的问题(采用jboss hornetq消息中间件)

写下一些配置过程遇到的问题 (application.xml里怎么配置什么的网上很多,就不写了)



<jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:ConnectionFactory"></jee:jndi-lookup>


遇到"ConnectionFactory not bound"的错误,可是在jboss jmx-console上查看jndi name 是有ConnectionFactory,说明有bound的


解决办法:把服务器的deployment设置为 user workspace metadata,而不是jboss deploy folder

(斯认为是部署的顺序不同导致的,放在jboss deploy folder(在jboss 6.10下是\${JBOSS_HOME}\server\default\deploy),部署application.xml的时候可能connectionfactory还没有bound,而程序部署在use workspace metadata时,是先部署完jboss服务器的一些东西,再部署程序的.还未研究jboss启动过程部署的顺序,有了解的同学希望解答)


自己定义了一个存放消息的类Msg

消息实体采用ObjectMessage

发送消息objectMessage.setObjcet(msg)的时候没有问题,发送成功

但在消息监听器onMessage()收到消息的时候调用ObjectMessage.getObjce()方法的时候报  "class not found :packageName.Msg "之类的错误,百度google好像是jboss horneqt 自带的类加载器的问题


解决办法:

ClassLoader originalTCCL = Thread.currentThread().getContextClassLoader();  
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader()); //设置类加载器为当前的类加载器
try {
if(message instanceof ObjectMessage)
{
msg=(ChatMessage) ((ObjectMessage) message).getObject();
//处理msg

}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
Thread.currentThread().setContextClassLoader(originalTCCL);  //退出后再恢复成原来的类加载器
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值