server side code package service; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class HelloWorld { @WebMethod public String sayHello(String name){ return "Hello " + name; } } ant file for create client side code <project default="generate" basedir="."> <path id="jaxws.classpath"> <pathelement location="D:/download software/glassfish/lib/webservices-tools.jar" /> <pathelement location="D:/download software/glassfish/lib/webservices-rt.jar" /> <pathelement location="D:/download software/glassfish/lib/javaee.jar" /> </path> <target name="clean generate"> <delete> <fileset dir="generate"> <include name="**/*.*" /> </fileset> </delete> </target> <target name="generate" depends="clean generate"> <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> <classpath refid="jaxws.classpath"> </classpath> </taskdef> <echo message="Running wsimport" /> <wsimport keep="true" destdir="./generate" package="webservices.client" wsdl="http://127.0.0.1:8080/MyWebService/HelloWorldService?wsdl" /> </target> </project> client side code package client; import javax.xml.ws.WebServiceRef; import webservices.client.HelloWorld; import webservices.client.HelloWorldService; public class HelloClient { @WebServiceRef(wsdlLocation = "http://127.0.0.1:8080/MyWebService/HelloWorld?wsdl") static HelloWorldService service = new HelloWorldService(); // sun's tutorial has bug here public static void main(String[] args) { try { HelloClient client = new HelloClient(); client.doTest(args); } catch (Exception e) { e.printStackTrace(); } } public void doTest(String[] args) { try { HelloWorld port = service.getHelloWorldPort(); String name; name = "xxx xxx"; String response = port.sayHello(name); System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } }