第一步 生成webservice服务
我是用java语言写的webservice服务。用的是eclipse软件和tomcat服务器。
配置tomcat服务器自己百度解决。
首先 File -> new -> Dynamic web Project 先建立一个名为my_server的web项目。
然后再src中建立一个包cn.jun,在包中建立三个java文件:WebService、WebServicePublish、WebServiceImpl。
其中代码如下:
WebService类中:
package cn.jun;
import javax.jws.WebMethod
@javax.jws.WebService
public interface WebService {
@WebMethod
String sayHello();
}
WebServiceImpl类中:
package cn.jun;
@javax.jws.WebService
public class WebServiceImpl implements WebService{
public String sayHello() {
System.out.println("服务被调用");
String aaa="我是服务器程序";
return aaa;
}
}
WebServicePublish类中:
package cn.jun;
import javax.xml.ws.Endpoint;
public class WebServicePublish {
public static void main(String[] args) {
String address="http://你的ip:9050/WS_Server/WebService"; //此处你的ip改成你当前电脑的ip地址,可以通过cmd中用ipconfig/all查看ipv4地址
//9050是端口号,端口号可以任意值只要不冲突就行
Endpoint.publish(address, new WebServiceImpl());
System.out.println("发布webservice成功");
}
}
直接点击运行(右键运行方式-> java应用程序)。
此时在浏览器中输入下面圆圈中蓝色字体部分,后面要加上 ?wsdl
此时看到成功发布,记住下图中的圆圈里的内容,因为后面要用到。
但是上面步骤生成的webservice存在问题,就是当我退出eclipse后,再从新进入eclipse后,之前在浏览器中查看的wsdl就不能查看了。可能的原因是当关闭了eclipse后,tomcat服务器也关闭了,所以发布在服务器上的werbservice服务就不能用了。此时你需要,重新发布webservice(就是重新运行WebservicPublish类,当控制台“输出发布webservice成功”)。
第二步 通过axis方式访问webservice服务。
首先要下载下面axis相关的jar包
相关网站有:
https://mvnrepository.com/
然后 File -> new -> Dynamic web Project 再建立一个名为my_client的web项目。并在里面建立AxisClient类
AxisClient类的代码:
package cn.jun;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class AxisClient {
/**
* @param args
* @throws AxisFault
*/
public static void main(String[] args) {try {
String endpoint = "http://ip:9050/WS_Server/WebService?wsdl"; //WSDL的URI,此处ip是:你发布wsdl的电脑的ipv4地址,由于是使用自己电脑发布的,所以ip就是自己电脑的ipv4地址
Service service = new Service(); //
Call call = (Call)service.createCall(); //
call.setTargetEndpointAddress(new URL(endpoint)); //这些照抄就行
call.setOperationName(new QName("http://jun.cn/","sayHello"));//此处http://jun.cn/是wsdl中画圈的targetNamespace ,sayHello是要用的方法名字方法名字,此处根据你自己生成的wsdl文件改成相应的就行。
String ret = (String)call.invoke(new Object[]{""}); //ret就接收返回的值
System.out.println("return value is "+ret); //在控制台输出返回的值
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
此时再将之前下载的jar包复制到lib文件夹下
然后全选择,点击右键构建路径->添加至构建路径
最后运行AxisClient程序在控制台中就可以看到结果,客户端调用webservice的sayHello方法,返回了"我是服务器程序"