我们正在设计一个应用程序,MDB 将在其中接收传入消息并执行一系列任务。
其中一些功能类似于 XML 验证,有些则类似于日志记录、MIS 条目等方面。
编辑:
消息类型可能会有所不同,具体取决于排序或引发故障等功能或邮政编码查找等信息服务。这些也因调用者而异,因此调用者 A 的订单与 B 不同,但大部分 XML 结构应该相同。
每个工作都将经历功能性工作单元,例如发件人验证、产品代码验证(如果下订单)、安全检查(基于 IP)、注册到我们的数据库(如果有效)、错误队列(如果无效)等等。
我的问题是,因为我们希望将功能位模块化,以便我们可以构建一个执行功能 A、B、C 的 MDB,另一个 MDB 执行 B、C、D 等功能,具体取决于消息的类型是 - 并基于所有消息类型中常见的任务。
我应该使用什么设计模式?
其次,有没有办法让我在 XML 文件中配置这些函数,以便 MDB 读取 XML 以查看必须执行哪些函数以及按什么顺序执行?这是我们当前考虑的从主 MDB 链接的 Helper POJO 或 session Bean 中模块的替代方案。
最佳答案
@shinynewbike:对于您的问题,最好使用 MDB 来读取消息并确定消息的类型,然后 MDB 可以查阅工厂类以返回实现相同接口(interface)以及 MDB 可以迭代的处理程序列表来调用...基本上是一个命令设计模式。 XML 配置示例:-
<configuration>
<handler name="A" class="A"/>
<handler name="B" class="B"/>
...
<handlers-stack name="stack1">
<handler ref="A">
<handler ref="c">
</handlers>
<message type="X" handlers-ref="stack1"/>
<message type="Y" handlers-ref="stack2"/>
</configuration>
关于MDB 的 Java EE 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581770/