一、WebService的开发手段

  使用Java开发WebService时可以使用以下两种开发手段

    1、 使用JDK开发(1.6及以上版本)

    2、使用CXF框架开发(工作中)

二、使用JDK开发WebService

2.1、开发WebService服务器端

  1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:

 1 package me.gacl.ws;
2
3 import javax.jws.WebMethod;
4 import javax.jws.WebService;
5
6 /**
7 * @author gacl
8 * 定义SEI(WebService EndPoint Interface(终端))
9 */
10 //使用@WebService注解标注WebServiceI接口
11 @WebService
12 public interface WebServiceI {
13
14 //使用@WebMethod注解标注WebServiceI接口中的方法
15 @WebMethod
16 String sayHello(String name);
17
18 @WebMethod
19 String save(String name,String pwd);
20 }

  2、编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,如下所示:

 1 package me.gacl.ws;
2
3 import javax.jws.WebService;
4
5 /**
6 * @author gacl
7 * SEI的具体实现
8 */
9 //使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
10 @WebService
11 public class WebServiceImpl implements WebServiceI {
12
13 @Override
14 public String sayHello(String name) {
15 System.out.println("WebService sayHello "+name);
16 return "sayHello "+name;
17 }
18
19 @Override
20 public String save(String name, String pwd) {
21 System.out.println("WebService save "+name+", "+pwd);
22 return "save Success";
23 }
24 }

  3、使用Endpoint(终端)类发布webservice,代码如下:

 1 package me.gacl.ws.test;
2
3 import javax.xml.ws.Endpoint;
4
5 import me.gacl.ws.WebServiceImpl;
6
7 /**
8 * @author gacl
9 *
10 * 发布Web Service
11 */
12 public class WebServicePublish {
13
14 public static void main(String[] args) {
15 //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
16 //String address = "http://192.168.1.100:8989/";这个WebService发布地址的写法是合法的
17 //String address = "http://192.168.1.100:8989/Webservice";这个WebService发布地址的是合法的
18 String address = "http://192.168.1.100:8989/WS_Server/Webservice";
19 //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
20 Endpoint.publish(address , new WebServiceImpl());
21 System.out.println("发布webservice成功!");
22 }
23 }

  运行WebServicePublish类,就可以将编写好的WebService发布好了,WebService的访问URL是:http://192.168.1.100:8989/WS_Server/Webservice ,如下图所示:

  

  这里我们编写了一个WebServicePublish类来发布WebService,如果是Web项目,那么我们可以使用监听器或者Servlet来发布WebService,如下:

  1、使用ServletContextListener监听器发布WebService

 1 package me.gacl.listener;
2
3 import javax.servlet.ServletContextEvent;
4 import javax.servlet.ServletContextListener;
5 import javax.servlet.annotation.WebListener;
6 import javax.xml.ws.Endpoint;
7 import me.gacl.ws.WebServiceImpl;
8
9 /**
10 * @author gacl
11 * 用于发布WebService的监听器
12 */
13 //使用Servlet3.0提供的@WebListener注解将实现了ServletContextListener接口的WebServicePublishListener类标注为一个Listener
14 @WebListener
15 public class WebServicePublishListener implements ServletContextListener {
16
17 @Override
18 public void contextDestroyed(ServletContextEvent sce) {
19
20 }
21
22 @Override
23 public void contextInitialized(ServletContextEvent sce) {
24 //WebService的发布地址
25 String address = "http://192.168.1.100:8080/WS_Server/WebService";
26 //发布WebService,WebServiceImpl类是WebServie接口的具体实现类
27 Endpoint.publish(address , new WebServiceImpl());
28 System.out.println("使用WebServicePublishListener发布webservice成功!");
29 }
30 }

  将Web应用部署到服务器运行时,在初始化Web应用上下文时,就会发布WebService了。

  接着我们可以使用发布的URL地址访问WebService,如下图所示:

  

  2、使用Servlet发布WebService

 1 package me.gacl.web.controller;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.annotation.WebServlet;
5 import javax.servlet.http.HttpServlet;
6 import javax.xml.ws.Endpoint;
7 import me.gacl.ws.WebServiceImpl;
8
9 /**
10 * @author gacl
11 * 用于发布WebService的Servlet
12 */
13 //使用Servlet3.0提供的@WebServlet注解将继承HttpServlet类的普通Java类标注为一个Servlet
14 //将value属性设置为空字符串,这样WebServicePublishServlet就不提供对外访问的路径
15 //loadOnStartup属性设置WebServicePublishServlet的初始化时机
16 @WebServlet(value="",loadOnStartup=0)
17 public class WebServicePublishServlet extends HttpServlet {
18
19 /* (non-Javadoc)
20 * @see javax.servlet.GenericServlet#init()
21 * 在WebServicePublishServlet初始化时发布WebService
22 */
23 public void init() throws ServletException {
24 //WebService的发布地址
25 String address = "http://192.168.1.100:8888/WebService";
26 //发布WebService,WebServiceImpl类是WebServie接口的具体实现类
27 Endpoint.publish(address , new WebServiceImpl());
28 System.out.println("使用WebServicePublishServlet发布webservice成功!");
29 }
30 }

  将Web应用部署到服务器运行时,在初始化WebServicePublishServlet时,就会发布WebService了。如下图所示:

  

  接着我们可以使用发布的URL地址访问WebService,如下图所示:

  

  关于发布WebService主要就是通过javax.xml.ws.Endpoint类提供的静态方法publish进行发布,如果是普通的java项目,那么可以专门写一个类用于发布WebService,如果是Web项目,那么可以使用ServletContextListener或者Servlet进行发布。

2.2、开发WebService客户端

  1、借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于Jdk的bin目录下,如下图所示:

  

  执行命令:wsimport -keep url(url为wsdl文件的路径)生成客户端代码。

  创建一个WebService客户端测试项目,如下图所示:

  

  打开命令行窗口,切换到src目录,执行"wsimport -keep http://192.168.1.100:8888/WebService?wsdl"生成客户端代码,如下图所示:

  

  执行命令的过程中没有出现任何错误,那么代码就生成成功了,刷新一下src目录,就可以看到生成的代码了,如下图所示:

  

  2、 借助生成的代码编写调用WebService对外提供的方法

  wsimport工具帮我们生成了好几个java类,但我们只需要关心WebServiceImplService类和WebServiceImpl接口的使用即可,如下所示:

 1 package me.gacl.ws.client;
2
3 import me.gacl.ws.WebServiceImpl;
4 import me.gacl.ws.WebServiceImplService;
5
6 /**
7 * @author gacl
8 * 调用WebService的客户端
9 */
10 public class WSClient {
11
12 public static void main(String[] args) {
13 //创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的
14 WebServiceImplService factory = new WebServiceImplService();
15 //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的
16 WebServiceImpl wsImpl = factory.getWebServiceImplPort();
17 //调用WebService的sayHello方法
18 String resResult = wsImpl.sayHello("孤傲苍狼");
19 System.out.println("调用WebService的sayHello方法返回的结果是:"+resResult);
20 System.out.println("---------------------------------------------------");
21 //调用WebService的save方法
22 resResult = wsImpl.save("孤傲苍狼","123");
23 System.out.println("调用WebService的save方法返回的结果是:"+resResult);
24 }
25 }

  客户端调用服务器端的WebService方法运行结果如下:

  

  从调用返回的结果显示,借助wsimport工具生成的客户端代码已经成功调用到了WebService中的方法。以上就是使用JDK开发WebService的相关内容。

[置顶] WebService学习总结(3)——使用java JDK开发WebService的更多相关文章

  1. WebService学习总结(三)——使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  2. WebService学习--(三)使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  3. WebService学习总结(三)——使用JDK开发WebService(转)

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  4. WebService学习总结(二)--使用JDK开发WebService

    一.WebService的开发方法 使用java的WebService时可以使用一下两种开发手段 使用jdk开发(1.6及以上版本) 使用CXF框架开发(工作中) 二.使用JDK开发WebServic ...

  5. 使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  6. 2.使用JDK开发webService

    使用jdk开发webService需要注意:jdk版本必须1.6以及1.6以上! 以下webService的组成部分: server端和client端,通过服务器端(server)webService ...

  7. WebService-使用JDK开发WebService

    一.使用JDK开发WebService 2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所 ...

  8. 【WebService】使用JDK开发WebService(二)

    WebService的开发手段 1.使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) WebService的组成 1.服务器端 2.客户端 使用JDK开发WebService a. ...

  9. WEBSERVICE之JDK开发webservice

    转自:https://www.cnblogs.com/w-essay/p/7357262.html 一.开发工具与环境 1. jdk1.6版本以上(jdk1.6.0_21及以上版本) 2 .eclip ...

随机推荐

  1. Logback自定义日志输出内容

    场景 一般情况下,日志打印的内容都是根据配置文件中配置的pattern格式指定好的.在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的p ...

  2. [ES2017] Iterate over properties of an object with ES2017 Object.entries()

    The Object.entries() function is an addition to the ECMAscript scpec in Es2017. This allows us to it ...

  3. Silverlight 应用程序中未处理的错误

    Silverlight 开发中遇到个错误: SCRIPT5022: Silverlight 应用程序中未处理的错误 代码: 2108 类别: InitializeError 消息: 无法下载初始屏幕或 ...

  4. C++ 不输入回车就不结束输入的实现方法

    方法一 char mystr[128]; mystr[0] = '\0'; char c = getchar(); int i=0; while(c!='\n') { mystr[i] = c; c ...

  5. hdu1856 More is better (并查集)

    More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others) ...

  6. 自己定义控件-DownSlidingDrawer

    一.描写叙述 能够下拉的 SlidingDrawer 二.效果图 图片是网上找到,可是效果是一样的 三.源代码 https://github.com/mentor811/Demo_MySlidingD ...

  7. 第一个ASP.NET

    1.新建 2.发布 3.访问

  8. Android学习笔记进阶18 之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  9. css3的新特性选择器-------属性选择器

    自己学css的时候比较乱,这次趁着复习把css3的新特性选择器和css2以前不怎么用的选择器做一个总结 <div id="parent"> <p>I'm a ...

  10. OpenCV —— 图像变换

    将一副图像转变成另一种表现形式 ,比如,傅里叶变换将图像转换成频谱分量 卷积 —— 变换的基础 cvFilter2D  源图像 src 和目标图像 dst 大小应该相同 注意:卷积核的系数应该是浮点类 ...