使用JDK原生发布WebService,十分方便快捷.
附上项目工程代码
接口
@WebService这个注解,说明该接口是一个WebService接口
package com.jdk.ws;
import javax.jws.WebService;
@WebService
public interface HelloService {
public String sayHello(String name);
}
实现方法
package com.jdk.ws;
import javax.jws.WebService;
@WebService
public class HelloServiceImpl implements HelloService {
public String sayHello(String name) {
return "hello : "+name;
}
}
main方法
public class WS_JDK_Main {
/**
* 使用JDK提供的javax.xml.ws.Endpoint即可发布WebService.
* 不过需要提供一个WebService的地址(address).
* @param args
*/
public static void main(String[] args) {
String address = "http://localhost:8080/jdkws/HelloSerice";
HelloService helloService = new HelloServiceImpl();
Endpoint.publish(address, helloService);
System.out.println("WebService is start~ address : "+address);
}
}
然后直接run运行就好...
看到这个wsdl文档 , 就说明你的Server端已经发布成功,可以被其他客户端调用了...
然后我们编写客户端调用代码.
首先,使用jdk自带的工具,根据wsdl文档,生成代码.
我们先创建一个空的Client工程项目.
然后获取src的路径.
在cmd命令行中,进入这个目录.
接下来,调用JDK工具,生成客户端代码. 对了,忘记说了.. 一定要配置好,JDK环境变量!!!!!
而且 , 发布的服务端程序,不要关闭...让它一直跑着...
现在我们执行命令...
后面的那个url就是浏览器中发布的地址.
接着我们去Client工程的src下刷新一下.. 会发现有自动生成的代码在里面.
提示 : 有时候自动生成的代码,会报错,这个大部分情况是JDK版本引起的(至少我遇到的都是JDK版本问题)..尝试,切换JDK版本试试...
这个是自动生成的代码
然后我们编写一个Test方法 , 去调用服务端.
客户端代码
package com.jdk.client;
import com.jdk.ws.HelloServiceImpl;
import com.jdk.ws.HelloServiceImplService;
public class TestClient {
public static void main(String[] args) {
HelloServiceImplService helloServiceImpl = new HelloServiceImplService();
HelloServiceImpl helloService = helloServiceImpl.getHelloServiceImplPort();
String responseStr = helloService.sayHello("CYX");
System.out.println(responseStr);
}
}
run运行一下...
下面这个图 , 对应了WSDL文档和客户端调用代码之间的关系.
OK...JDK发布WebService结束...