参考文献:
https://blog.csdn.net/cs_hnu_scw/article/details/80181762
创建服务器webService
package com.william.TestWebService;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;@WebService
public class MyFirstWebService {/*** 定义webservice服务器中的方法* @param content* @return*/public String testWebService(String content){System.out.println("我收到了你发的信息:" + content);return "服务器:我转发信息给你";}public static void main(String[] args){//定义自己的webservice服务器发布的地址String address = "http://localhost:9191/MyFirstWebService"; //这个9191端口随便定义,只要不冲突即可//通过该方法进行发布Endpoint.publish(address, new MyFirstWebService());//打印一句话,表示一下服务器进行了开启System.out.println("my webservcie starting");}}
解析WebService服务器的内容
操作:在cmd命令行中执行:wsimport -s . http://localhost:9191/MyFirstWebService?wsdl
结果:这样的话,就会在你执行这句话的目录下面生成对应的服务器的代码(包括.class文件和.java文件)
创建客户端服务器webServiceClient
首先是把上面得到的代码中的.java文件(请注意,.class文件就不需要)拷贝到我们新建的一个客户端的java项目中
package com.william.testwebservice;import org.junit.Test;public class MyTestWebService {@Testpublic void testWebService(){//获取webservice服务器对象(这里的类名,其实是从wsdl文件中的servicename标签中进行获取的)MyFirstWebServiceService myFirstWebServiceService = new MyFirstWebServiceService();//获取到我们自定义的webservice的对象MyFirstWebService myFirstWebServicePort = myFirstWebServiceService.getMyFirstWebServicePort();//调用service服务器中的方法String receivedInfo = myFirstWebServicePort.testWebService("您好,webservice 服务器");//打印从服务器的方法中得到的返回值,测试表示收到了服务器返回的内容System.out.println("服务器返回的内容是:" + receivedInfo); }
}
注意
QName调用方式
package com.william.testwebservice;import java.net.MalformedURLException;
import java.net.URL;import javax.xml.namespace.QName;
import javax.xml.ws.Service;import org.junit.Test;public class MyTestQNameWebService {@Testpublic void test() throws MalformedURLException{//创建一个连接(地址对应的就是webservice服务器中的地址)URL wsdlDocumentLocation = new URL("http://localhost:9090/MyFirstWebService?wsdl");//这个参数,主要是根据我们设定的webService的接口来进行的QName serviceName = new QName("http://TestWebService.william.com/","MyFirstWebServiceService");Service ws = Service.create(wsdlDocumentLocation , serviceName );//获取到调用的对象内容MyFirstWebService port = ws.getPort(MyFirstWebService.class);//方法的调用String result = port.testWebService("my name is scw");System.out.println(result);}
}
参考文献:
https://blog.csdn.net/cs_hnu_scw/article/details/80181762