标题说明了一切:我有一个简单的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工作正常,客户端可以调用webmeethods,等等。
正如您所看到的,我希望它能够注入EntityManager和UserTransaction,我需要它来创建更多的DAO。但是,两者都是空的。
WebService不是基于EJB的,有没有办法检索这些对象?
Container是JBoss 5.0GA
答案 0 :(得分: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");