首页 > 技术文章 > Java实现WebService

JimmySeraph 2017-11-17 16:52 原文

1 package org.jimmy.webservice20171116;
2 
3 import javax.jws.WebService;
4 
5 @WebService 
6 public interface HelloWorld {
7     public String sayHi(String name);
8 }
 1 package org.jimmy.webservice20171116;
 2 
 3 import java.util.Date;
 4 import javax.jws.WebService;
 5 
 6 @WebService(endpointInterface="org.jimmy.webservice20171116.HelloWorld",serviceName="readerService")
 7 public class HelloWorldImpl implements HelloWorld {
 8 
 9     @Override
10     public String sayHi(String name) {
11         return name + ",您好!现在时间是:" + new Date();
12     }
13     
14 }
 1 package org.jimmy.webservice20171116;
 2 
 3 import javax.xml.ws.Endpoint;
 4 
 5 public class ServiceMain {
 6 
 7     public static void main(String[] args) {
 8         
 9         HelloWorld hw = new HelloWorldImpl();
10 //        Endpoint.publish("http://localhost:33333/readerService", hw);
11         Endpoint.publish("http://172.31.7.212:33333/readerService", hw);
12         /*IReaderService readerService = new ReaderService();
13         Endpoint.publish("http://localhost:33333/readerService", readerService);*/
14         System.out.println("Web Service暴露成功!");
15 
16     }
17 
18 }

先运行ServiceMain,如果控制台出现"Web Service暴露成功"就好了.

浏览器输入:

http://172.31.7.212:33333/readerService?wsdl

如果出现下面这张图就是成功了!

注意:ServiceMain的第10行,如果写成localhost,本机可用,同事的机器貌似用ip地址也不能用(结果,你们可以自己测试一下).

注意:如果publish那里的第一个参数就是url,必须要加上http://,端口号也是必须的(貌似有默认端口),要不然可能会报错!

直接用ip地址是自己和内网的都能用的.

远程或本地调用的测试代码(注意,其他项目调用需要用之前项目的Jar包或引用之前的项目,具体怎么引用,百度说的很清楚,不清楚的话只能你们自己想办法了,我只是菜鸟):

 1 package org.jimmy.webservice20171116;
 2 
 3 import java.net.URL;
 4 
 5 import javax.xml.namespace.QName;
 6 import javax.xml.ws.Service;
 7 
 8 public class Test {
 9 
10     public static void main(String[] args) {
11         try{
12             URL wsdlUrl = new URL("http://172.31.7.212:33333/readerService");
13             Service s = Service.create(wsdlUrl, new QName("http://webservice20171116.jimmy.org/", "readerService"));
14             HelloWorld hs = s.getPort(new QName("http://webservice20171116.jimmy.org/", "HelloWorldImplPort"), HelloWorld.class);
15             String result = hs.sayHi("Dawn");
16             System.out.println(result);
17         }catch(Exception e){
18             e.printStackTrace();
19         }
20         
21     }
22 
23 }

 

 

最后运行Test,如果出现下图就完成了!

 

 

 

推荐阅读