Hi!
I'm trying to develop RESTful web services with CXF version 2.1.1 using
the jax-rs style.
1/ I've created a java interface (my.package.AdminService) that
describes the service and got the annotations following the example
given there : http://cwiki.apache.org/CXF20DOC/jax-rs-jsr-311.html
Declaring : @Path("/rest/Admin/") on the interface and with a method
like this :
@GET
@Path("/validity/{engine-key}")
public boolean isValidEngineID(@PathParam("engine-key") Long engineID);
I've created a class (my.package.AdminServiceImpl) that implements this
interface.
Note that my java interface has annotations relative to soap
configuration too because I want my service to be accessible both in a
soap or REST way.
And, for now, I use it in a soap way and it works perfectly. :-)
2/ In order to build my webapp, I use Maven2 and I've declared the
following CXF dependencies :
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-aegis</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-local</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-jms</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-management</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-common-utilities</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>${jsr311.version}</version>
</dependency>
<dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.abdera</groupId>
<artifactId>abdera-client</artifactId>
<version>0.4.0-incubating</version>
</dependency>
<dependency>
<groupId>org.apache.abdera</groupId>
<artifactId>abdera-server</artifactId>
<version>0.4.0-incubating</version>
</dependency>
<dependency>
<groupId>org.apache.abdera</groupId>
<artifactId>abdera-spring</artifactId>
<version>0.4.0-incubating</version>
</dependency>
3/ In order to deploy the service, I use a Spring configuration file
beans.xml that contains both declarations (for soap and Rest) :
<jaxws:endpoint
id="admin"
implementor="my.package.AdminServiceImpl"
address="/Admin" />
<jaxrs:server id="restfulAminService" address="/">
<jaxrs:serviceBeans>
<ref bean="RestAminService" />
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="RestAminService" class="my.package.AdminServiceImpl" />
4/ While deploying on Tomcat 6 server, it seems to be ok :
15 oct. 2008 11:52:59 org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be /
15 oct. 2008 11:52:59 org.apache.cxf.transport.servlet.CXFServlet
loadSpringBus
INFO: Load the bus with application context
15 oct. 2008 11:52:59 org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources
INFO: No cxf.xml configuration file detected, relying on defaults.
5/ When trying to send a request, I've this error : No operation
matching request path /rest/Admin/validity/34576549 is found.
I'm sure I've done something wrong but i don't see what... Could you
help me, please?
Thanks in advance.