MDB做Facade的几个小问题

popufig 2005-03-23 11:10:32
用MDB和SLSB组合来做facade的好处这里就没必要说了,但是现在在具体用MDB来做facade的时候就碰到一些问题:

1、客户端只能针对某个Queue和Topic和发送Message,而MDB在onMessage()调用具体的逻辑代码。客户端基本上是针对一个用例发送一个Message,所以要么就是几个用例发送到一个Queue或者Topic,然后在MDB里做判断再调用具体逻辑代码。这样子MDB里就充斥了一堆if.... else if....,日后维护起来也很郁闷;
要么就是针对用例建立不同的Queue或者Topic,然后客户端选择不同的目的进行发送Message,但是这样就会有一堆的Queue和Topic,而且还有相应的MDB,数量恐怕不会少,恐怕到多的时候连自己都会糊涂了。

不知道针对这个问题大家是怎么解决的。

2、在EJB CookBook里有提到:
When a transaction in a message-driven bean rolls back, the application server
can be configured to resend the JMS message that started the transaction. If the
error that caused the rollback keeps occurring, you could potentially cause an
endless loop.

他的解决办法是:
private HashMap previousMessages;
private int count = 0;
public void onMessage( Message incomingMsg )
{
// get the unique message Id
String msgId = incomingMsg.getJMSMessageID();
if ( previousMessages.containsKey(msgId) )
count = ( (Integer) msgMap.get(msgId) ).intValue();
else
count = 0;
// if msg has been retried couple of times, discard it.
// and remove the stored id.
if ( count < _MAX_REDLIVERY_CONST_ )
{
logMessage(incomingMsg);
previousMessages.remove( msgId );
return;
}
//perform business logic for message
boolean error = doBusinessFunction();
if ( error )
{
mdbContext.setRollBackOnly();
previousMessages.put( msgId, new Integer(++count) );
}
else
{
if( previousMessages.containsKey( msgId ) )
previousMessages.remove( msgId );
}
}
我认为这么做是不是只能对对Queue只有一个MDB接收实例的时候能起作用,也就是所pool不能多于一个,书上也有提到可以用服务器特定的描述符设定来实现,不知道weblogic是怎么设定的,我没找到
^^!!!

3、怎么防止未授权的用户发送Message或者说是过滤相应的Message
我知道对于后者可以设定:
<message-selector>
<![CDATA[ UserRole = 'BuyerRole' ]]>
</message-selector>
我觉得这样还不够,不知道还有没有什么其他的方法

请各位大虾出手,解答小弟心中的疑惑,谢谢!!
...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
popufig 2005-04-03
  • 打赏
  • 举报
回复
n天后再顶!!
popufig 2005-03-23
  • 打赏
  • 举报
回复
米有人用这种模式咩??

popufig 2005-03-23
  • 打赏
  • 举报
回复
顶!!!!!!!!!!!
内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。

67,535

社区成员

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

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