我们有一个使用EJB 3
无状态bean的系统,它也作为Web服务公开。
来自其他团队的集成请求要求我们的系统在调用后(通过Web服务或其他方式)向其他系统发出通知。由于这与我们的系统并不完全相关,我宁愿将此功能与我们自己的系统松散耦合,而不是将这些功能硬编码到我们的系统代码中。
EJB或Web服务上是否有任何功能可以实现我的目标?我们需要一个方法级别的调用监听器,以便在调用EJB方法/ Web服务时,它可以触发回调/消息,以便我们可以根据它执行某些操作。我希望它是用于设置JMS或其他东西的某种注释/配置。
我们使用JBoss作为应用程序服务器。如果有任何JBoss特定的解决方案,也欢迎它。
答案 0 :(得分:2)
我建议两个选择:
使用JMS。当你提到松散耦合时,JMS首先想到了 - 你可以在方法调用之后在某个队列/主题上放置一条消息,让监听器执行更多的操作。 JMS消息可以携带各种对象 - 唯一的请求是该类实现Serializable(ObjectMessage#setObject);另一个优点是您可以(un)独立部署无状态bean和其他系统。它们可以位于不同的JVM上。
使用拦截器。从技术上讲,它们会在你的方法运行之前被调用,但当然总有一些不错的workaround :-)这是关于拦截器的official documentation,但既然你提到你正在使用JBoss,那么也可以在JBoss pages上找到一些有趣的资料。