2

标题说明了一切:我有一个简单的 WebService

@WebService(serviceName="G08WService", portName="G08WPort", endpointInterface = "at.fhj.itm.g08.wservice.IUserWebService")

public class WService implements IUserWebService
{
    @PersistenceContext(unitName="g08b2")
    EntityManager em;

    @Resource 
    UserTransaction utx;

    public WService()
    {

    }
}

当然WebService也是在web.xml中定义的,调用WSDL就可以了,客户端可以调用webmemethods等等。

如您所见,我希望它能够注入 EntityManager 和 UserTransaction,我需要它来创建进一步的 DAO。但是,两者始终为空。

WebService 不是基于 EJB,有没有办法检索这些对象?

容器是 JBoss 5.0GA

4

1 回答 1

0

因为您的 Web 服务不是由 EJB 容器管理的,所以 CDI 是不可能的。您应该改为通过 JNDI 查找手动获取 EntityManager。

EntityManager 默认未注册,因此您应该将其添加到persistence.xml

<property name="jboss.entity.manager.jndi.name" value="java:/yourEntityManagerName"/>

或工厂:

<property name="jboss.entity.manager.factory.jndi.name" value="java:/yourEntityManagerFactoryName"/>

然后执行 JNDI 查找以获取容器管理的实体管理器:

 EntityManager em = (EntityManager) sessionContext.lookup("java:app/yourEntityManagerName");
于 2017-03-04T09:16:04.303 回答