首先,介绍一下几种常用的web service开发框架的开发步骤。
Net环境
IDE为Microsoft Visual Studio2005
服务器端开发步骤为:
1、 新建一个Web Site,选择ASP.Net Web Service,语言选择C#
2、 在IDE自动生成的服务器端代码App_Code/Service.cs中加入自己的业务逻辑代码
3、 选中Web Site,右键选择“View in Browser”即可进行测试
VS2005自带有内嵌的测试web服务器,测试起来非常方便。注意Service.asmx为web service发布后的访问入口文件。
要发布到IIS或者apache中,需要先选中Web Site,右键选择“Publish Web Site”,指定发布的目录,即对应的web服务器发布应用的目录。
客户端开发步骤:
1、 新建一个Console Application
2、 选中工程,右键选择“Add Web Reference”,指定可访问的web service的URL地址,进行添加
3、 引入命名空间,即可方便使用客户端存根代码。
Java环境
CXF
调用webservice服务CXF的前身是Xfire,具体内容可参照/ 。
IDE为Eclipse 3.2 (JDK 1.5以上)
服务器端开发步骤为:
1、 首先访问/cxf/ 下载所需的jar包。
2、 新建一个web工程,将下载的CXF的开发包加入到lib中。
3、 在l 文件中添加提供web service的监听servlet,对应的处理类名为f.transport.servlet.CXFServlet,并设置其启动时装载顺序属性为1;指定访问servlet的URL格式。
内容可参考如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="java.sun/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="java.sun/xml/ns/javaee java.sun/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class> f.transport.servlet.CXFServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app> |
4、 新建一个l配置文件,内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xmlns:jaxws="/jaxws" xmlns:simple="/simple" xmlns:soap="/bindings/soap" xsi:schemaLocation=" /schema/beans /schema/beans/spring-beans-2.0.xsd /bindings/soap /schemas/configuration/soap.xsd /simple /schemas/simple.xsd /jaxws /schemas/jaxws.xsd"> <import resource="classpath:META-INF/l" /> <import resource="classpath:META-INF/l" /> <import resource="classpath:META-INF/l" /> <bean id="notifyService" class="s.service.ws.NotifyService" /> <jaxws:endpoint id="NotifyService" implementor="#notifyService" address="/NotifyService" /> </beans> |
在如上的配置文件中,我们指定了要发布为web service的类名,访问地址,访问端点标识。
5、 编写要发布为web service的类和接口,注意注解(annotation)的使用。
可参照如下的代码:
package com.webservice; import javax.jws.WebService; //接口类: @WebService public interface INotifyService { public void sayHello(String name); } //实现类: package com.webservice; @WebService public class NotifyService implements INotifyService { public void sayHello(String name){ System.out.println(“hello,”+name); } } |
6、 向lib包中加入Spring的开发包,并确保classpath下有对应的bean定义文件,例如l。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/dtd/spring-beans-2.0.dtd"> <beans> </beans> |
7、 发布web应用到对应的web容器(例如tomcat5.5)或者用内嵌的Jetty6.0进行部署。
客户端的开发步骤:
这里介绍通过wsdl文件生成客户端存根代码的方式,前提是要先下载CXF的工具包。
1、 编辑Ant脚本,可参照如下配置:
<?xml version="1.0"?> <project name="wsdl2java" basedir="."> <description> 用于通过wsdl文件生成java代码的ant文件 </description> <property name="cxf.home" location="E:/2008/cxf\apache-cxf-2.0.3-incubator" /> <path id="cxf.classpath"> <fileset dir="${cxf.home}/lib"> <include name="*.jar" /> </fileset> </path> <target name="cxfWSDLToJava"> <java classname="f.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client" /> <arg value="-d" /> <arg value="src/main" /> <arg value="WebService.wsdl" /> <classpath> <path refid="cxf.classpath" /> </classpath> </java> </target> </project> |
上面的WebService.wsdl为服务器端web service对应的wsdl文件。
2、 运行Ant脚本生成客户端存根代码,将代码和依赖的CXF包引入到自己的工程即可使用。
NetBeans
由于Sun已经在J2EE5.0中提供了对Jax-ws规范的实现,并且提供了NetBeans IDE对J2EE5.0的支持,使得开发web service非常简单。
前提条件是我们需要到/ 下载NetBeans 6.0。官方的下载文件中已经集成了Tomcat6.0和J2EE5.0。
服务器端开发步骤:
1、 打开NetBeans IDE,新建一个 Web Application
2、 选中Web Application,右键选择“New ――Web Service”,按照向导和图形界面新建自己的web service。
注意对Jax-ws中注解的使用,可参照如下代码:
package com.webservice; import java.util.Calendar; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; l.ws.Holder; @WebService() public class notify { @WebMethod(operationName = "SendSMS") public boolean SendSMS( @WebParam(name = "userID") String userID, @WebParam(name = "systemID") String systemID, @WebParam(name = "content") String content, @WebParam(name = "sendSMSID") String sendSMSID) { //TODO write your implementation code here: System.out.println(userID); System.out.println(systemID); System.out.println(content); System.out.println(sendSMSID); return false; } @WebMethod(operationName = "ReceiveSMS") sz.eap.WebService.SMSResponse[] ReceiveSMS( @WebParam(name = "systemID") String systemID, @WebParam(name = "autoClose") boolean autoClose) { //TODO write your implementation code here: System.out.println(systemID); System.out.println(autoClose); SMSResponse[] responses=new SMSResponse[3]; for(int i=0;i<3;i++){ SMSResponse resp=new SMSResponse(); resp.setContent("content:"+i); resp.setSendSMSID("sendSMSID:"+i); resp.setReceivedSMSID("receivedSMSID"+i); responses[i]=resp; } return responses; } @WebMethod(operationName = "SendSMS_Time") public boolean SendSMSTime( @WebParam(name = "userID") String userID, @WebParam(name = "systemID") String systemID, @WebParam(name = "content") String content, @WebParam(name = "sendTime") Calendar sendTime, @WebParam(name = "sendSMSID") String sendSMSID) { //TODO write your implementation code here: System.out.println(userID); System.out.println(systemID); System.out.println(content); System.out.println(sendTime); System.out.println(sendSMSID); return false; } @WebMethod(operationName = "sendByteData") public boolean sendByteData( @WebParam(name = "data") byte[] data) { //TODO write your implementation code here: System.out.println(new String(data)); return false; } /** * Web service operation */ @WebMethod(operationName = "sendRefParameter") public String sendRefParameter( @WebParam(name = "content", mode = WebParam.Mode.INOUT) Holder<String> content) { //TODO write your implementation code here: content.value = "server received"; System.out.println(content.value); return content.value; } } |
客户端开发:
1、 打开NetBeans IDE,新建一个Java Application
2、 选中Java Application,右键New web service client,按照向导完成
3、 在生成的Main类的方法中,右键――>Web service client resource――>Call webservice operation,按照向导完成
4、 设置调用参数的初始值,完成客户端的调用代码
Axis
这里简单介绍一下Axis1.x版本的使用方法。
服务器端开发:
1、 到/axis/ 下载所需的lib包
2、 将lib包中的jar包路径设置到classpath中
3、 启动web服务器,发布下载包中的web应用axis;访问127.0.0.1:8080/axis/测试是否访问正常
4、 编写deploy.wsdd文件,参照下面:
<deployment xmlns="/axis/wsdd/" xmlns:java="/axis/wsdd/providers/java"> <service name="MyService" provider="java:RPC"> <parameter name="className" value="ample3.MyService"/> <parameter name="allowedMethods" value="*"/> </service> </deployment> |
5、 使用命令行进行部署:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -llocalhost:8080/axis/services/AdminService deploy.wsdd |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论