1.创建服务端-java项目
@WebService
public class MyFirstWebService {
/**
* 定义webservice服务器中的方法
* @param content
* @return
*/
public String testWebService(String content){
System.out.println("我收到了你发的信息:" + content);
return "服务器:我转发信息给你";
}
public static void main(String[] args){
/* InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
String hostAddress = addr.getHostAddress();
System.out.println(hostAddress);*/
//定义自己的webservice服务器发布的地址 MyFirstWebService 为服务器名称
//部署到服务器时 需要将ip改为 0.0.0.0 外网才可以访问
String address = "http://"+"0.0.0.0"+":10086/MyFirstWebService"; //这个9090端口随便定义,只要不冲突即可
//通过该方法进行发布
Endpoint.publish(address, new MyFirstWebService());
//打印一句话,表示一下服务器进行了开启
System.out.println("my webservcie starting");
}
}
2.发布到服务器
打成jar包后
复制到服务器
java -jar xxxxx.jar 运行即可
# 注意外网访问必须是 0.0.0.0
3.访问
http://xxx.xxx.xxx.xxx:10086/MyFirstWebService?wsdl
出现xml即成功
4.本地解析服务
客户端项目目录下(src\main\java) cmd 运行命令
wsimport -s . http://152.136.150.136:10086/MyFirstWebService?wsdl
5.创建Main测试
方式一
public class Main {
public static void main(String[] args) {
//获取webservice服务器对象(这里的类名,其实是从wsdl文件中的servicename标签中进行获取的)
MyFirstWebServiceService myFirstWebServiceService = new MyFirstWebServiceService();
//获取到我们自定义的webservice的对象
MyFirstWebService myFirstWebServicePort = myFirstWebServiceService.getMyFirstWebServicePort();
//调用service服务器中的方法
String receivedInfo = myFirstWebServicePort.testWebService("您好,webservice 服务器");
//打印从服务器的方法中得到的返回值,测试表示收到了服务器返回的内容
System.out.println("服务器返回的内容是:" + receivedInfo);
}
}
方式二 QName
public class QNameMain {
public static void main(String[] args) throws MalformedURLException {
//创建一个连接(地址对应的就是webservice服务器中的地址)
URL wsdlDocumentLocation = new URL("http://xxx.xxx.xxx.xxx:10086/MyFirstWebService?wsdl");
//这个参数,主要是根据我们设定的webService的接口来进行的
// QName serviceName = new QName("http://webservice.scw.hnu.com/","MyFirstWebServiceService");
//这里第一个参数是包名 倒序 //如果错误 会报错 可以根据报错的修改
QName serviceName = new QName("http://webservice.example.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);
}
}
6.备注
第4步解析后生成文件
com/example/webservice (与服务端相同)
文件包括: (仅保留.java文件即可)
MyFirstWebService.class
MyFirstWebService.java (接口,主要使用的方法)
MyFirstWebServiceService.class
MyFirstWebServiceService.java
ObjectFactory.class
ObjectFactory.java
package-info.class
package-info.java
TestWebService.class
TestWebService.java
TestWebServiceResponse.class
TestWebServiceResponse.java