JMS问题:ejb的onMessage方法如何监听远程jms队列中消息

mier0713 2009-06-26 05:29:53
问题如标题:我想在A机配置jms,希望监听A机的jam的应用程序配置在B机上,用EJB怎样配置?希望高手能够解答。当然,越详细越好,因为我很小白,太抽象的东东不能理解哈~~~
...全文
432 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qbo4_535 2010-03-31
  • 打赏
  • 举报
回复
楼主问题解决了吗?为什么我远程访问jms就是发送到远程的队列中是抛出

javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.teamsun.drp_agent.pub.util.JmsUtils.ConnectService(JmsUtils.java:42)
at com.teamsun.drp_agent.jms.MessageReceiver.<init>(MessageReceiver.java:61)
at com.teamsun.drp_agent.MainService.RunMain(MainService.java:69)
at com.teamsun.drp_agent.MainService.main(MainService.java:40)
Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
... 6 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:179)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)



mier0713 2009-06-29
  • 打赏
  • 举报
回复
之前描述的不够清晰,是偶的错……
mier0713 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inthirties 的回复:]
引用楼主 mier0713 的帖子:
问题如标题:我想在A机配置jms,希望监听A机的jam的应用程序配置在B机上,用EJB怎样配置?希望高手能够解答。当然,越详细越好,因为我很小白,太抽象的东东不能理解哈~~~



给你一个大致的思路

监听在A机上的话,A机可以建立一个MDB,或者是一个写一个消费者的应用程序。用来监听queue,B作为发送者,往A机的JMS队列你发消息即可。

具体的实现每个点如何实现,可以g实例来看了。
[/Quote]

........发送和接受我都实现了,只不过目前只能监听本地队列,不能监听远程队列,求的是JBOSS weblogic sphare三种服务器的ejb的jms远程监听配置……
希望能给我一份详细的配置文件……是配置文件……
inthirties 2009-06-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 mier0713 的帖子:]
问题如标题:我想在A机配置jms,希望监听A机的jam的应用程序配置在B机上,用EJB怎样配置?希望高手能够解答。当然,越详细越好,因为我很小白,太抽象的东东不能理解哈~~~
[/Quote]

给你一个大致的思路

监听在A机上的话,A机可以建立一个MDB,或者是一个写一个消费者的应用程序。用来监听queue,B作为发送者,往A机的JMS队列你发消息即可。

具体的实现每个点如何实现,可以g实例来看了。
mier0713 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuade 的回复:]
任何地方都可以监听JMS,和是不是在EJB里没关系,下面是一段独立的监听JMS的例子,放在哪都可以运行,当然,你也可以放在你的EJB方法里

=========================================
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
env.put(Context.PROVIDER_URL, "ormi://localhost:23791");
env.put(Context.SECURITY_CREDENTI…
[/Quote]
那个,是配置发送的吧。我指的是接受onMessage方法监听远程jms啊……
mier0713 2009-06-26
  • 打赏
  • 举报
回复
呃……要JBOSS weblogic sphare3个版本的,顺便一提,weblogic 的我已经找到了。
推荐给大家:http://www.ziki.cn/blog/archives/1182439319.html
艾德 2009-06-26
  • 打赏
  • 举报
回复
任何地方都可以监听JMS,和是不是在EJB里没关系,下面是一段独立的监听JMS的例子,放在哪都可以运行,当然,你也可以放在你的EJB方法里

=========================================
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
env.put(Context.PROVIDER_URL, "ormi://localhost:23791");
env.put(Context.SECURITY_CREDENTIALS, "oc4jadmin");
env.put(Context.SECURITY_PRINCIPAL, "oc4jadmin");
try {
InitialContext ctx = new InitialContext(env);

QueueConnectionFactory tconFactory_ = (QueueConnectionFactory) ctx.lookup("java:comp/resource/testQ/QueueConnectionFactories/qcf");
QueueConnection tcon_ = tconFactory_.createQueueConnection();
QueueSession tsession_ = tcon_.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue_ = (javax.jms.Queue) ctx.lookup("java:comp/resource/testQ/Queues/aqDemoQueue");
QueueReceiver tSender_ = tsession_.createReceiver(queue_);

TextMessage msg1 = (TextMessage) tSender_.receive();
System.out.println("@@@@@@@@" + msg1.getText());

tSender_.close();
tsession_.close();
tcon_.close();
} catch (Exception e) {
e.printStackTrace();
}

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧