When I run the RestClient.java, it is giving me error
java.lang.NoSuchFieldError: REQUEST_URI
Can someone help me, what should be the @Path. Is the code for using the
same service class (HelloWorldImpl.java) for both JAX-WS, JAX-RS?
Please see all the code below and let me know.
thanks.
Code
====
HelloWorld.java (Inteface)
===================
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.WebParam.Mode;
@WebService(name = "HelloWorld")
public interface HelloWorld {
void receive(@WebParam(name = "itemXML", mode = Mode.IN) String
itemXML);
}
HelloWorldImpl.java
==============
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/HelloWorld")
@WebService(endpointInterface = "org.openpipeline.services.HelloWorld",
serviceName = "HelloWorld")
@Consumes("application/xml")
public class HelloWorldImpl implements HelloWorld{
@WebMethod
@POST
@Path("/receive")
public void receive(@PathParam("*/*")String itemXML) {
System.out.println(itemXML);
}
}
Server.java
========
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class Server {
public static void main(String[] args){
HelloWorldImpl implementor = new HelloWorldImpl();
/*
* Start JAX-WS service
*/
JaxWsServerFactoryBean svrFactory = new
JaxWsServerFactoryBean();
svrFactory.setServiceClass(HelloWorld.class);
svrFactory.setAddress("http://localhost:9000/");
svrFactory.setServiceBean(implementor);
svrFactory.create();
/*
* Start JAX-RS service
*/
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(HelloWorldImpl.class);
sf.setResourceProvider(HelloWorldImpl.class,
new SingletonResourceProvider(new HelloWorldImpl()));
sf.setAddress("http://localhost:9001/");
sf.create();
}
}
RestClient.java
============
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
public class RestClient {
public static void main(String args[]) throws Exception {
PostMethod post = new
PostMethod("http://localhost:9001/HelloWorld/receive/");
post.addRequestHeader("Accept", "application/xml");
RequestEntity entity = new StringRequestEntity("<root>Hello
REST!</root>",
"application/xml", "ISO-8859-1");
post.setRequestEntity(entity);
HttpClient httpclient = new HttpClient();
try {
int result = httpclient.executeMethod(post);
System.out.println("Response status code: " + result);
System.out.println("Response body: ");
} finally {
// Release current connection to the connection pool
once you are
// done
post.releaseConnection();
}
System.out.println("\n");
System.exit(0);
}
}
Client.java
========
public class Client {
public static void main(String[] args){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
factory.setServiceClass(HelloWorld.class);
factory.setAddress("http://localhost:9000/HelloWorld");
HelloWorld client = (HelloWorld) factory.create();
Item item = new Item();
item.importXML("<root>Hello</root>");
client.receive(item.toString());
}
}
--
View this message in context:
http://www.nabble.com/Need-Help-with-JAX-WS-and-JAX-RS-example-tp23287998p23287998.html
Sent from the cxf-dev mailing list archive at Nabble.com.