1.创建服务端-java项目
@WebServicepublic 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?xml出现在wsdl中,即成功
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); }}
方式二 QNamepublic 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.备注第四步分析后生成文件
com/example/webservice (与服务端相同)文件包括: (仅保留.java文件即可)MyFirstWebService.classMyFirstWebService.java (接口,主要使用方法)MyFirstWebServiceService.classMyFirstWebServiceService.javaObjectFactory.classObjectFactory.javapackage-info.classpackage-info.javaTestWebService.classTestWebService.javaTestWebServiceResponse.classTestWebServiceResponse.java