rem auto.bat 脚本
javac HelloService.java
start java HelloService
wsimport -d . http://localhost:7070/Ebay?wsdl
wsimport -s . -d . http://localhost:7070/Ebay?wsdl
javac -d . Main.java
java localhost._7070.ebay.Main
pause
// HelloService.java
import javax.xml.ws.*;
import javax.jws.*;
import javax.jws.soap.*;
@WebService(targetNamespace="http://localhost:7070/Ebay")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class HelloService{
public static void main(String [] args){
Endpoint.publish("http://localhost:7070/Ebay", new HelloService());
}
@WebMethod
public void sayHello(){
System.out.println("hello");
}
}
//Main.java
package localhost._7070.ebay;
public class Main{
public static void main(String [] args){
HelloServiceService hss = new HelloServiceService();
HelloService hs = hss.getHelloServicePort();
hs.sayHello();
}
}
以上为下文的3个文件,在读下面前请把上面3个文件放在同一个目录下,然后点击auto.bat文件,然后查看结果。
然后在看下文你会更加清楚了!
首先你的JDK为1.6版本以上
1.写一个HelloService.java的类文件代码如下(这里放到了E:/wsclient目录下):
- import javax.xml.ws.*;
- import javax.jws.*;
- import javax.jws.soap.*;
- @WebService(targetNamespace="http://localhost:7070/Ebay")
- @SOAPBinding(style=SOAPBinding.Style.RPC)
- public class HelloService{
- public static void main(String [] args){
- Endpoint.publish("http://localhost:7070/Ebay", new HelloService());
- }
- @WebMethod
- public void sayHello(){
- System.out.println("hello");
- }
- }
import javax.xml.ws.*; import javax.jws.*; import javax.jws.soap.*; @WebService(targetNamespace="http://localhost:7070/Ebay") @SOAPBinding(style=SOAPBinding.Style.RPC) public class HelloService{ public static void main(String [] args){ Endpoint.publish("http://localhost:7070/Ebay", new HelloService()); } @WebMethod public void sayHello(){ System.out.println("hello"); } }
2.到命令行下进行编译然后运行:
E:/wsclient>javac HelloService.java
E:/wsclient>java HelloService
3.不要结束程序,打开浏览器地址栏中输入:
http://localhost:7070/Ebay?wsdl
回车访问当看到下面的内容时,服务发布成功:
4.不要结束程序运行,再开一个命令窗口生成一个访问服务的客户端,命令窗口如下:
E:/wsclient>wsimport -d e:/wsclient http://localhost:7070/Ebay?wsdl
回车运行此时会在e盘的wsclient目录下生成localhost文件夹:
进去目录结构为E:/wsclient/localhost/_7070/ebay:
在ebay目录下面有两个文件,分别是HelloService.class和HelloServiceService.class。
只是class文件不利于我们学习,我们再生成源代码,运行如下命令:
E:/wsclient>wsimport -s e:/wsclient -d e:/wsclient http://localhost:7070/Ebay?wsdl
回车运行,此时会在ebay目录下生成HelloService.java和HelloServiceService.java
打开看一下会发现HelloService.java是一个接口,要通过客户端调用,我们应该能得到一个代理,
打开HelloServiceService.java看一下,里面有一个getHelloServicePort()的方法返回的就是一个HelloService;
这个时候我们就可以写一个客户端进行调用了.
5.写一个客户端调用的类Main.java(这里文件放在E:/wsclient,然后编译将class生成到ebay目录下),代码如下:
- package localhost._7070.ebay;
- public class Main{
- public static void main(String [] args){
- HelloServiceService hss = new HelloServiceService();
- HelloService hs = hss.getHelloServicePort();
- hs.sayHello();
- }
- }
package localhost._7070.ebay;
public class Main{
public static void main(String [] args){
HelloServiceService hss = new HelloServiceService();
HelloService hs = hss.getHelloServicePort();
hs.sayHello();
}
}
运行命令:E:/wsclient>javac -d . Main.java
它会将class文件自动生成到相应的包中
再用如下命令运行程序:
E:/wsclient>java localhost._7070.ebay.Main
回车运行,这个时候在当前命令窗口什么也没看见,因为程序运行在服务端。切换到另一个开启服务的命令窗口:
窗口显示如下:
E:/wsclient>java HelloService
hello
hello已经在服务端打印出来了。到此结束!