项目目的:
程序A调用程序B中的方法C
首先申明:本次需要采用的JDK版本为jdk1.6+,也就是要java6+才能看到效果,java5没试过...我认为,升级一下JDK版本比起安装什么
Axis以及导入一堆jar包和配置N多配置文件来说,java6的webservice无疑是简单的不能再简单!
1.首先先创建两个java项目,可以使web项目也可以是普通项目,我这里是两个简单的普通工程,通过main方法来发布服务和测试调用服务
2.先写服务端项目名叫做java_webService然后创建一个ServiceTest类代码如下
package test;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
//别忘了引入webservice
@WebService
public class ServiceTest {
/**
* 这是一个最简单的服务方法
* 该方法就是要暴露给其他应用程序调用的方法
*/
public String getUser(String words){
return "成功接收到你的参数为-------->"+words;
}
/**
* 这里我们使用main方法来发布我们的service
* @param args
*/
public static void main(String[] args) {
Endpoint.publish("http://localhost:8081/ServiceTest/users",new ServiceTest());
System.out.println("Publish Success~");
}
}
3.打出"Publish Success~"后,说明我们消息发布成功,不成的话,注意:1.需要JDK1.6+,2.确定服务器端口没有被占用;成功后, 在浏览器地址栏输入:http://localhost:8081/ServiceTest/users?wsdl就可以看到该service的详细信息!
4.然后再创建一个调用方client,我这里创建了一个java_webClient项目作为调用方类的名字叫做ClientTest代码如下
package client;
import com.client.service.PublishTest;
import com.client.service.PublishTestService;
public class ClientTest {
/**
* 这里用main方法来测试调用
* @param args
*/
public static void main(String[] args) {
//new服务对象,前提是先要用cmd根据服务方发布的wsdl文件来生成我们客户端需要的一些文件
PublishTest pd = new PublishTestService().getPublishTestPort();
//用对象调用服务方的方法,
String success = pd.getUser("success");
System.out.println(success);
}
}
5.服务端已经发布好了,客户端也已经就绪,接下来就根据服务端发布的wsdl来生成客户端需要的一些文件
关键的来了,打开cmd输入以下命令:wsimport -s src的路径(客户端项目) -p 完整包名(客户端) -keep webservice的发布地址(服务端的发布地址) 然后回车就OK了
例如我这里是:
wsimport -s E:\WorkSpace\qijx_example_workSpace\java_webClient\src -p com.client.service -keep http://localhost:8081/ServiceTest/users?wsdl
(如果wsimport命令失效,请检查是否把jdk配入环境变量!JAVA_HOME:JDK所在位置,CLASSPATH:%JAVA_HOME%\lib\tools.jar)
回车后,会出现:
parsing WSDL...
generating code...
compiling code...
恭喜你,成功了,
然后刷新客户端java_webClient项目会看见多了一些需要的文件,这个时候就可以按照上面的步骤进行调用啦
6.想自己编写一个查询天气预报的接口可以参考(http://www.cnblogs.com/xdp-gacl/p/4260627.html)写的挺好,只不过上面的天气预报的wsdl访问不了了,新的是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl