使用JDK开发WebService
一、WebService的开发手段
使用Java开发WebService时可以使用以下两种开发手段
1、?使用JDK开发(1.6及以上版本)
2、使用CXF框架开发(工作中)
1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:
2、编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,如下所示:
3、使用Endpoint(终端)类发布webservice,代码如下:
运行WebServicePublish类,就可以将编写好的WebService发布好了,WebService的访问URL是:http://192.168.1.100:8989/WS_Server/Webservice?,如下图所示:
这里我们编写了一个WebServicePublish类来发布WebService,如果是Web项目,那么我们可以使用监听器或者Servlet来发布WebService,如下:
1、使用ServletContextListener监听器发布WebService
1packageme.gacl.listener;23importjavax.servlet.ServletContextEvent;4importjavax.servlet.ServletContextListener;5importjavax.servlet.annotation.WebListener;6importjavax.xml.ws.Endpoint;7importme.gacl.ws.WebServiceImpl;89/10@authorgacl11用于发布WebService的监听器12/13//使用Servlet3.0提供的@WebListener注解将实现了ServletContextListener接口的WebServicePublishListener类标注为一个Listener14@WebListener15publicclassWebServicePublishListenerimplementsServletContextListener{1617@Override18publicvoidcontextDestroyed(ServletContextEventsce){1920}2122@Override23publicvoidcontextInitialized(ServletContextEventsce){24//WebService的发布地址25Stringaddress="http://192.168.1.100:8080/WS_Server/WebService";26//发布WebService,WebServiceImpl类是WebServie接口的具体实现类27Endpoint.publish(address,newWebServiceImpl());28System.out.println("使用WebServicePublishListener发布webservice成功!");29}30}
将Web应用部署到服务器运行时,在初始化Web应用上下文时,就会发布WebService了。
接着我们可以使用发布的URL地址访问WebService,如下图所示:
2、使用Servlet发布WebService
将Web应用部署到服务器运行时,在初始化WebServicePublishServlet时,就会发布WebService了。如下图所示:
接着我们可以使用发布的URL地址访问WebService,如下图所示:
关于发布WebService主要就是通过javax.xml.ws.Endpoint类提供的静态方法publish进行发布,如果是普通的java项目,那么可以专门写一个类用于发布WebService,如果是Web项目,那么可以使用ServletContextListener或者Servlet进行发布。
1、借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于Jdk的bin目录下,如下图所示:
执行命令:wsimport-keepurl(url为wsdl文件的路径)生成客户端代码。
创建一个WebService客户端测试项目,如下图所示:
打开命令行窗口,切换到src目录,执行"wsimport-keep?http://192.168.1.100:8888/WebService?wsdl"生成客户端代码,如下图所示:
执行命令的过程中没有出现任何错误,那么代码就生成成功了,刷新一下src目录,就可以看到生成的代码了,如下图所示:
2、?借助生成的代码编写调用WebService对外提供的方法
wsimport工具帮我们生成了好几个java类,但我们只需要关心WebServiceImplService类和WebServiceImpl接口的使用即可,如下所示:
|
|