请高手指点关于JMS问题

SadHeart 04-07-05

最近,准备完成这样的一个项目:

用JMS实现两个应用之间的数据传递。我们提取A应用的有效信息,把数据用XML封装,通过JMS Server暂存,由B应用去取出XML格式的消息然后使用。

现在请教大家这个问题的解决办法,基于WAS5。

我没有想明白的问题是:

1.A应用通过什么样的渠道把消息发送出去?自己写一个JSP页面?然后怎么去取所谓的有用的数据?还是做个客户端,可是这可能需要一个J2EE客户端啊!仍然需要部署啊!

2.我是想用消息驱动Bean来实现消息的接收的,但是问题是,消息驱动Bean对消息的处理是在自己的onMessage()方法里的。怎么进一步的把数据转发到相应的应用上去?即B应用如何从消息驱动Bean里面拿出这个消息?

SportsBaby1980
2004-07-05 12:55

我不是高手。

不过,我对这个问题有自己的看法。
请各位斧正。

A、B两个应用之间传递XML数据:
提取A应用的有效信息,把数据用XML封装
通过JMS Server暂存
由B应用去取出XML格式

我认为这个问题需要以下几个步骤:
0.用户发送操作
1。A应用准备数据
2。发送程序 把A应用数据打包并发送到一个Queue或Topic,
Durable异步方式
3。过一段时间
4。接受程序 到Queue/TOPIC 中取数据(并销毁 根据需要),去掉XML,还原信息,在Onmessage方法内,调用B对象的入口

通过什么渠道把A数据发出,
可以根据用户的一个操作
比如提交表单,
然后激发步骤1
或者任何其他用户操作都行



SadHeart
2004-07-05 20:28

首先感谢楼上的回复
数据的发送很好实现,关键是接收!
接收端,倘若用消息驱动Bean的话,在OnMessage方法中处理完,调用B的对象,可是怎么样把控制权交给B呢?毕竟是B来完成数据的提取和使用。
这种推的方式好像主动权不好交给B。

如果不用消息驱动Bean的话,我今天测试接收端用servlet来调用接收程序实现,(因为是发布订阅模式,所以只能用推的方式)结果呢,报了一个很奇怪的错误:
javax.jms.IllegalStateException: Method setMessageListener not permitted
难道是因为发送和接收都是servlet的原因?

SportsBaby1980
2004-07-06 09:25

我想了解一下B应用的情况

是应用程序还是WEB应用?

B应用现在是否已经完成?
并且不允许修改或者增加新的代码?

SadHeart
2004-07-06 10:42

B应用也是Web应用,B应用可能不止一个,所以如果从消息驱动Bean里面直接去调用B的话,可能需求变化很大。因为可能有很多B,我采用发布订阅模式,所有的B都是预订者。
B应用当然可以添加代码了
所以,我就不明白了,感觉上这是个拉的关系!
谢谢。

4Go 1 2 3 4 下一页