参考文献:
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 {
@Test
public 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 {
@Test
public 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