2009-07-13 9 views
2

見出しはすべてそれを言う:私は、単純なWebサービスもちろん非EJBベースのWebServiceにEntityManagerを挿入する方法は?

@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() 
    { 

    } 
} 

Webサービスにもweb.xmlで定義され、およびWSDLを呼び出すことだけで正常に動作され、クライアントは、webmeethodsを呼び出すことができますを持ってきましたそうです。

EntityManagerとUserTransactionをインジェクションするようにしたいのですが、私はさらにDAOを作成する必要があります。ただし、両方とも常にnullです。

WebServiceはEJBベースではありません。これらのオブジェクトを取得する方法はありますか?

コンテナは、あなたのWebサービスがEJBコンテナによって管理されていないので、CDIは不可能であるJBossの5.0GA

答えて

0

です。代わりにJNDIルックアップを実行して手動でEntityManagerをフェッチする必要があります。

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

や工場:

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

はその後、コンテナを取得するためにJNDIルックアップを実行し、あなたがpersistence.xmlでそれを追加する必要がありますので

のEntityManagerは、デフォルトで登録されていません管理対象エンティティマネージャ:

EntityManager em = (EntityManager) sessionContext.lookup("java:app/yourEntityManagerName"); 
関連する問題