首先,介绍一下几种常用的web service开发框架的开发步骤。
Net环境
IDEMicrosoft 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.asmxweb service发布后的访问入口文件。
要发布到IIS或者apache中,需要先选中Web Site,右键选择“Publish Web Site”,指定发布的目录,即对应的web服务器发布应用的目录。
        客户端开发步骤:
1、  新建一个Console Application
2、  选中工程,右键选择“Add Web Reference”,指定可访问的web serviceURL地址,进行添加
3、  引入命名空间,即可方便使用客户端存根代码。
Java环境
CXF
调用webservice服务CXF的前身是Xfire,具体内容可参照/
IDEEclipse 3.2 JDK 1.5以上)
        服务器端开发步骤为:
1、  首先访问/cxf/ 下载所需的jar包。
2、  新建一个web工程,将下载的CXF的开发包加入到lib中。
3、  l 文件中添加提供web service的监听servlet,对应的处理类名为f.transport.servlet.CXFServlet,并设置其启动时装载顺序属性为1;指定访问servletURL格式。
内容可参考如下所示:
<?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 IDEJ2EE5.0的支持,使得开发web service非常简单。
前提条件是我们需要到/ 下载NetBeans 6.0。官方的下载文件中已经集成了Tomcat6.0J2EE5.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小时内删除。