如何在非基于EJB的WebService中注入EntityManager?
标题说明了一切: 我有一个简单的 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的,有没有办法检索这些对象?
容器是JBoss 5.0GA
The headline says it all: I've got a simple 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()
{
}
}
Of course the WebService is also defined in the web.xml, and calling the WSDL works just fine, a client can call webmeethods, and so on.
As you can see i want it to get the EntityManager and a UserTransaction to be injected, i need it to create a further DAO. However, both are always null.
The WebService is not EJB based, is there a way to retrieve those objects?
The Container is JBoss 5.0GA
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为您的 Web 服务不是由 EJB 容器管理,所以 CDI 是不可能的。 您应该通过执行 JNDI 查找来手动获取 EntityManager。
默认情况下,EntityManager 未注册,因此您应该将其添加到 persistence.xml 中:
或工厂:
然后执行JNDI 查找以获取容器管理的实体管理器:
Because your webservice is not managed by the EJB Container, CDI is impossible. You should fetch the EntityManager manually by doing a JNDI lookup instead.
The EntityManager is not registered by default so you should add it in
persistence.xml
:<property name="jboss.entity.manager.jndi.name" value="java:/yourEntityManagerName"/>
or the factory:
<property name="jboss.entity.manager.factory.jndi.name" value="java:/yourEntityManagerFactoryName"/>
Then perform JNDI lookup to obtain the container-managed entity manager: