1

odata4jを既存のCXFサービスアプリケーションに統合しようとしています。サーブレットは、既存のSOAPおよびRESTサービスをすでにホストしています。私のアプリケーションサーバーはtomcatです。

私のweb.xml:

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
        <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

既存のSOAPおよびRESTサービスは、jaxrsおよびjaxws構成ファイルを介して構成されます。

JPAODataプロデューサーファクトリを作成しました。

public class CmecfOdataProducerFactoryImpl implements ODataProducerFactory {
    String namespace = "MyOData";
    private int maxResults = 100;
    @Override
    public ODataProducer create(Properties prprts) {

        String persistenceName = null;
        try {
            persistenceName = ServiceLocator.getInstance().getResource("java:/comp/env/persistenceUnitName", String.class);
        } catch (Exception ex) {
            Logger.getLogger(CmecfOdataProducerFactoryImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceName);
        JPAProducer producer = new JPAProducer(emf, namespace, maxResults);

        return producer;
    }
}

このodataサービスを含める最もクリーンな方法は何ですか?

助けてくれてありがとう!

4

1 に答える 1

0

odataJPAファクトリをweb.xmlファイルに追加するだけで何もする必要はありません。以下のweb.xml構成は必ず機能しますので、JPAファクトリパッケージを適切に配置してください。

<servlet>     
<servlet-name>JPAFactory</servlet-name>     
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>     
<init-param>       
<param-name>javax.ws.rs.Application</param-name>       
<param-value>org.odata4j.jersey.producer.resources.ODataApplication</param-value>     
</init-param> 
<init-param> 
<param-name>odata4j.producerfactory</param-name> 
<param-value>**your packageName**.CmecfOdataProducerFactoryImpl </param-value> 
</init-param> 
<load-on-startup>1</load-on-startup>   
</servlet>   
<servlet-mapping>     
<servlet-name>JPAFactory</servlet-name>     
<url-pattern>/jpaproducer.svc/*</url-pattern>   
</servlet-mapping>
于 2013-04-05T12:31:44.773 に答える