带有EJB的Weblogic WebService

时间:2011-07-20 08:17:04

标签: web-services java-ee

我将开发一个Web服务,它将公开两个操作。这些操作将从数据库中查询/更新数据。

请建议我使用EJB进行数据库操作以及我将获得哪些优势?

在我的网络服务中,我直接使用JPA,如下所示,并创建我的实体并坚持它们

@PersistenceUnit private EntityManagerFactory emf;
@Resource
private UserTransaction utx;

请回答有利有弊。

此致 姆兰

1 个答案:

答案 0 :(得分:0)

这两种方法都是有效的,并且受Java EE支持,因此根据我的经验,这只是 design 推荐:

永远不要将EJB操作直接暴露为Web服务,它只会增加运行时的复杂性。如果您将EJB作为Web服务发布,则容器仍必须使用内部 Web服务servlet 将其包装,该内部 Web服务servlet (隐式)将包含内部Web服务映射的WAR紧密耦合到您的ejb-jar(取决于在应用服务器产品上)。此外,在日常操作中很难调试。

我建议仅使用标准Java EE功能而不使用任何其他库:

  • POJO定义Web服务接口,即其操作(@WebService注释)。它委托了一个功能实现。我们称之为POJO WS-POJO

实现该功能的两个选项:

  1. WS-POJO 调用提供所需功能的无状态会话Bean。 Pro:所有可用的EJB功能(依赖注入,声明式事务管理等)。骗局:“重量级”
  2. WS-POJO 调用自定义POJO,例如命令模式。亲:“轻量级”。 Con:无法进行依赖注入;要通过的实体经理等。
  3. 今天,我选择#1选项...我的2美分