Quantcast
Viewing all articles
Browse latest Browse all 1318

Implementing OData service using CXFNonSpringJaxrsServlet and JPA

Hi All,

 

I am trying to develop a simple OData service using JPA and CXFNonSpringJaxrsServlet.

I have installed Cloud SDK and the eclipse plugin successfully.

I have created a web dynamic project and it contains the following descriptor files(persistence.xml and web.xml):

 

persistence.xml:

 

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.0"

          xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

          <persistence-unit name="poc-cloud-service-model" transaction-type="RESOURCE_LOCAL">

                    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

                    <class>com.sap.cloud.poc.model.Employee</class>

                    <class>com.sap.cloud.poc.model.Family</class>

                    <class>com.sap.cloud.poc.model.Job</class>

                    <class>com.sap.cloud.poc.model.Person</class>

                    <properties>

                              <property name="eclipselink.ddl-generation" value="create-tables" />

                              <property name="eclipselink.logging.level" value="SEVERE" />

                    </properties>

          </persistence-unit>

</persistence>

 

 

web.xml:

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

          xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

          id="WebApp_ID" version="2.5">

          <display-name>cloud_poc</display-name>

          <servlet>

                    <display-name>PocServlet</display-name>

                    <servlet-name>PocServlet</servlet-name>

                    <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>

                    <init-param>

                              <param-name>javax.ws.rs.Application</param-name>

                              <param-value>com.sap.netweaver.cloud.odata.service.JpaApplication</param-value>

                    </init-param>

                    <init-param>

                              <param-name>odata4j.producerfactory</param-name>

                              <param-value>com.sap.netweaver.cloud.odata.service.JpaProducerFactory</param-value>

                    </init-param>

                    <load-on-startup>1</load-on-startup>

          </servlet>

          <servlet-mapping>

                    <servlet-name>PocServlet</servlet-name>

                    <url-pattern>/*</url-pattern>

          </servlet-mapping>

          <!-- Declare the JNDI lookup of the default data source -->

          <resource-ref>

                    <res-ref-name>jdbc/DefaultDB</res-ref-name>

                    <res-type>javax.sql.DataSource</res-type>

          </resource-ref>

</web-app>

 

The project has no errors. When i start my local cloud server i get the following exception:

 

org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/http.

org.apache.cxf.bus.managers.DestinationFactoryManagerImpl.getDestinationFactory(DestinationFactoryManagerImpl.java:130)

org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:88)

org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)

org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:151)

org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.createServerFromApplication(CXFNonSpringJaxrsServlet.java:381)

org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.init(CXFNonSpringJaxrsServlet.java:82)

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

com.sap.security.auth.service.webcontainer.internal.Authenticator.invoke(Authenticator.java:147)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

com.sap.core.tenant.valve.TenantValidationValve.invokeNextValve(TenantValidationValve.java:169)

com.sap.core.tenant.valve.TenantValidationValve.invoke(TenantValidationValve.java:84)

com.sap.core.js.monitoring.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:27)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)

org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)

java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

java.lang.Thread.run(Unknown Source)

 

 

Do i need to add something to web.xml to solve the problem ?

Please help.

 

Regards,

Slavik.


Viewing all articles
Browse latest Browse all 1318

Trending Articles