Showing posts with label JAXWS. Show all posts
Showing posts with label JAXWS. Show all posts

Thursday, March 28, 2013

JAX-WS web service eclipse tutorial

In this tutorial,we will see how we can develop JAX-WS endpoint and client step by step.

Web service Tutorial Content:

Part-1:Introduction to web services
Part-2:SOAP web service introduction 
Part-3:RESTful web service introduction
Part-4:SOAP web service example in java using eclipse
Part-5:JAX-WS web service eclipse tutorial
Part-6:JAX-WS web service deployment on tomcat 
Part-7:Create RESTful web service in java(JAX-RS) using jersey

Prerequisites:

  1. JDK 1.6
  2. Eclipse IDE

Steps for creating JAX-WS webservice endpoint.

1) Open Eclipse IDE
2) Create java project named "JAXWSServer"


3)Create new package named "org.arpit.javapostsforlearning.webservice"

 4)Create JAXWSService Endpoint Interface.
HelloWorld.java
package org.arpit.javapostsforlearning.webservice;
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface HelloWorld {

@WebMethod public String helloWorld(String name);
}
5)Create JAXWSService Endpoint implementation class.
HelloWorldImpl.java
package org.arpit.javapostsforlearning.webservice;
import javax.jws.WebService;

@WebService(endpointInterface="org.arpit.javapostsforlearning.webservice.HelloWorld")
public class HelloWorldImpl implements HelloWorld{

public String helloWorld(String name) {
return "Hello world from "+name;
}

}
6) Create Endpoint publisher.
HelloWorldWSPublisher.java
package org.arpit.javapostsforlearning.webservice;
import javax.xml.ws.Endpoint;

public class HelloWorldWSPublisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/WS/HelloWorld",new HelloWorldImpl());
}
}
Run above program.Your webservice is published.You can check your service wsdl at http://localhost:8080/WS/HelloWorld?wsdl

Steps for creating JAXWS Client


1)Open eclipse and create a new java project JAXWSClient.
3) Now we need to generate the client stubs.So open your command line, and enter the wsimport command:
cd %project_home%/src
wsimport -s . http://localhost:8080/WS/HelloWorld?wsdl
you will find java classes generated and compiled under src->org->arpit->javapostsforlearning->webservice

4) Lets create client class now.
create JAXWSClient.java under src->org.arpit.javapostsforlearning.webservice.client
package org.arpit.javapostsforlearning.webservice.client;
import org.arpit.javapostsforlearning.webservice.HelloWorld;
import org.arpit.javapostsforlearning.webservice.HelloWorldImplService;

public class JAXWSClient {

    /**
     * @author Arpit Mandliya
     */
    public static void main(String[] args) {
       
        HelloWorldImplService helloWorldService = new HelloWorldImplService();
        HelloWorld helloWorld = helloWorldService.getHelloWorldImplPort();
        System.out.println(helloWorld.helloWorld("Arpit"));
    }
}

5) Run above program and you will get following output.
Hello world from Arpit

Congratulation,you have successfully created web service endpoint and client.Now in next post,we will deploy it on Tomcat.

JAX-WS webservice deployment on tomcat

In previous post,we have seen how to develop JAX-WS web service end point and client.In this post,we will see how we can deploy web service end point to application server.

Web service Tutorial Content:

Part-1:Introduction to web services
Part-2:SOAP web service introduction
Part-3:SOAP web service example in java using eclipse
Part-4:JAX-WS web service eclipse tutorial
Part-5:JAX-WS web service deployment on tomcat


Here we will use tomcat as application server.

1) Open eclipse.
2) Create new web project named "HelloWorldWS"
3) Create new package named "org.arpit.javapostsforlearning.webservice"

 4) Create JAXWSService Interface.
HelloWorld.java
package org.arpit.javapostsforlearning.webservice;
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface HelloWorld {

@WebMethod public String helloWorld(String name);
}
5)Create JAXWSService implementation class.
HelloWorldImpl.java
package org.arpit.javapostsforlearning.webservice;
import javax.jws.WebService;

@WebService(endpointInterface="org.arpit.javapostsforlearning.webservice.HelloWorld")
public class HelloWorldImpl implements HelloWorld{

public String helloWorld(String name) {
return "Hello world from "+name;
}

}

6) Now , you need generate Web Services classes, open your command line, and type :
cd %project_home%
wsgen -s src -d build/classes -cp build/classes org.arpit.javapostsforlearning.webservice.HelloworldImpl
Now we will have two class generated under src/org/arpit/javapostsforlearning/webservice/jaxws

7)Now you need to create web.xml and put it under /HelloWorldWS/WebContent/WEB-INF/
<?xml version="1.0" encoding="UTF-8"?>
<web-app
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
                         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     version="2.4">
     <display-name>HellooWorldWS</display-name>
   <listener>
     <listener-class>
        com.sun.xml.ws.transport.http.servlet.WSServletContextListener
     </listener-class>
   </listener>
   <servlet>
      <servlet-name>HelloWorldWS</servlet-name>
      <servlet-class>
        com.sun.xml.ws.transport.http.servlet.WSServlet
      </servlet-class>
   </servlet>
   <servlet-mapping>
     <servlet-name>HelloWorldWS</servlet-name>
     <url-pattern>/HelloWorldWS</url-pattern>
   </servlet-mapping>
</web-app>
we have inserted three things here 1.listner-class 2.servlet 3.servlet-mapping
8) Now we will add sun-jaxws.xml under HelloWorldWS/WebContent/WEB-INF/.It will have endpoint definition.

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
  <endpoint
     name="HelloWorldWS"
     implementation="org.arpit.javapostsforlearning.webservice.HelloWorldImpl"
     url-pattern="/HelloWorldWS"/>
</endpoints> 
9) We need to download some jaxws jars and put jars under /HelloWorldWS/WebContent/WEB-INF/lib.
you can download attached library from attachment.
10) Now export your project as war and put it under your Tomcat webapps folder.
11) Run tomcat
If You see web service information page then you are done.
Source:Download