一、服务的开发
(开发框架很多 以cxf为例创建项目后 导入cxf的支持jar包)
①在web项目的资源文件夹src中建立格式如org.mike.ws的包
创建服务的接口类HelloWorld.java代码如下
1 package org.mike.ws; 2 import javax.jws.WebService; 3 4 /** 5 * Web服务接口,第一个Web Service规范的发布版,HelloWorld 6 * 7 * @author Mike 8 * 9 */ 10 @WebService 11 public interface HelloWorld { 12 /** 13 * @param name 名字 14 * @return 欢迎参数指定的名字 15 */ 16 public String sayHi(String name); 17 18 }
②在src中建立如下格式如org.mike.ws.impl的包
创建服务的实现类HelloWorldImpl.java
1 package org.mike.ws.impl; 2 3 import org.mike.ws.HelloWorld; 4 import javax.jws.WebService; 5 6 /** 7 * Web服务接口,第一个web service规范的发布版,HelloWorld 8 * 9 * @author Mike 10 * 11 */ 12 @WebService(endpointInterface = "org.mike.ws.HelloWorld", 13 serviceName="HelloWorld") 14 public class HelloWorldImpl implements HelloWorld { 15 16 /** 17 * @param name 名字 18 * @return 欢迎参数指定的名字 19 */ 20 @Override 21 public String sayHi(String name) { 22 return "欢迎"+name; 23 } 24 25 }
③在org.mike.ws包中创建类WSServlet.java用于发布服务
1 package org.mike.ws; 2 import javax.servlet.ServletConfig; 3 import javax.xml.ws.Endpoint; 4 import org.apache.cxf.transport.servlet.CXFNonSpringServlet; 5 import org.mike.ws.impl.HelloWorldImpl; 6 /** 7 * @author Mike 8 * 9 */ 10 public class WSServlet extends CXFNonSpringServlet { 11 12 @Override 13 public void loadBus(ServletConfig servletConfig){ 14 super.loadBus(servletConfig); 15 //发布服务 16 Endpoint.publish("/HelloWorld", new HelloWorldImpl()); 17 18 } 19 }
④修改网站的配置文件WebContent->WEB-INF->web.xml添加类说明和映射目录
添加代码如下注意添加的位置
1 <servlet> 2 <servlet-name>WSServlet</servlet-name> 3 <servlet-class>org.mike.ws.WSServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>WSServlet</servlet-name> 7 <url-pattern>/ws/*</url-pattern> 8 <!--上面很重要 使之应用最后映射为/ws/HelloWorld--> 9 </servlet-mapping>
二、发布
将网站上传至服务器假设发布地址为http://127.0.0.1
此时可检验应用是否同时发布http://127.0.0.1/ws/HelloWorld?wsdl
三、客户端使用已发布的Web Service
说明:Web Service发布后是可以用任何语言访问的
本例使用Java演示
①创建Java工程wsClientTest
导入Web Service支持类
打开命令行界面转到本工程src目录下 输入命令wsimport -keep http://127.0.0.1/ws/HelloWorld?wsdl(该命令为jdk自带)
src下边生成了Web Service支持类
②src下创建包test 并在包下创建类myTest.java代码如下
1 package HelloWorldTest; 2 3 import org.mike.ws.impl.*; 4 5 6 public class test { 7 public static void main(String[] args) { 8 HelloWorld_Service factory = new HelloWorld_Service(); 9 HelloWorld hw=factory.getHelloWorldImplPort(); 10 System.out.println(hw.sayHi("Mike")); 11 } 12 }
运行后可以看到控制台输出了"欢迎Mike"
毫无疑问的 断网后程序无法运行