WebService 简捷开发接口发布

WebService 不再介绍,请在网上搜索相关资料

      

一.介绍

      服务器端

       服务器端类图如下:

ServiceHandler

Service处理类,所有客户端的请求都会提交给该类处理,通过servcieName查找到相应的Web服务处理类,执行业务操作。


Service

Service接口,所有用户自己开发的Web服务,必须实现该接口中的service方法

 

ServiceConfig

       Service配置类,读取WebService配置文件,生成Web服务映射MAP

 

ServiceModule

       Service模块类,每一个用户自己开发的WebService程序,都对应一个模块配置

 

oa-service.xml

       Service配置文件,所有用户自己开发的Servier必须在此xml中配置,需要指定查找的service名称和对应的Service类名。该文件支持多XML Module配置,当多人开发时,每个人编写自己的配置文件,并最终在oa-service.xml文件中登记。

 

以上类位于com.oa.service.basic包中

 

      客户端

 

 

 

客户端的类除ServiceHandlerProxyServiceHandlerException是自己编写的外,其它是通过WSDLWebService Define Language)由JBX自动生成地。

 

ServiceHandlerProxy

       客户端使用该类完成WebService的调用

 

ServiceHandlerException

       WebService调用异常类

二.配置

      服务器端

1.       拷贝oa-service.jarWEB-INFlib目录下

2.     拷贝oa-servier.xmlWEB-INFclasses目录下

3.     拷贝server-config.wsddWEB-INF目录下

4.     配置Web.XML,在其中加入如下配置

<servlet>

    <servlet-name>SOAPMonitorService</servlet-name>

    <display-name>SOAP Monitor Service</display-name>

    <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>

    <init-param>

      <param-name>SOAPMonitorPort</param-name>

      <param-value>5001</param-value>

    </init-param>

    <load-on-startup>100</load-on-startup>

  </servlet>

  <servlet>

    <servlet-name>AxisServlet</servlet-name>

    <display-name>Apache-Axis Servlet</display-name>

    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>

  </servlet>

<servlet>

        <servlet-name>loadInitlet</servlet-name>

        <servlet-class>com.oa.servlet.LoadInitlet</servlet-class>

        <load-on-startup>4</load-on-startup>

</servlet>

  <!-- WebService Servlet -->

  <servlet-mapping>

    <servlet-name>SOAPMonitorService</servlet-name>

    <url-pattern>/SOAPMonitor</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/servlet/AxisServlet/*</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>*.jws</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

 

 

测试:

  IE中输入http://192.168.0.199:8002/appModule/services/ServiceHandler?wsdl

注意,将IP地址端口WebModule名修改成你自己的,如果可以看到wsdl文件,则表示配置成功

客户端

1.       拷贝oa-service.jarclasspath,完成路径添加

. 开发示例

       下面以一个常用的Hello,Word程序为示例,演示WebService的简捷开发过程

      服务器端

1.       新建一个类:com.oa.service.test. HelloService.java

代码如下,注意:必须实现Service接口

package com.oa.service.test;

 

import com.oa.service.basic.*;

import com.oa.utils.Tools;

 

public class HelloService implements Service {

  public Object service(Object[] args) throws ServiceException {

    StringBuffer buffer = new StringBuffer();

    for (int i = 0; args != null && i < args.length; i++) {

      buffer.append("/r/n客户端传入参数")

          .append(i)

          .append(":")

          .append(args[i]);

    }

    Tools.log.info(buffer.toString());

 

    //oa-service.xml中载入 HelloName

    String helloName = "";

    try {

      helloName =

ServiceConfig.config().find("helloService").getInitParamValue("HelloName", "World");

    } catch (ServiceNotFoundException e) {

      Tools.log.error(e.toString());

    }

   

    //"Hello,"+helloName作为返回值

    return "Hello,"+helloName;

  }

}

2.       登录该类到oa-service.xml

       

<?xml version="1.0" encoding="UTF-8"?>

<ServiceConfig>

        <Service className="com.oa.service.test.HelloService" name="helloService">

              <init-param>

                     <param-name>mapping</param-name>

                     <param-value>bean2map</param-value>

              </init-param>

              <init-param>

                     <param-name>HelloName</param-name>

                     <param-value>World</param-value>

              </init-param>

       </Service>

</ServiceConfig>

 

 

客户端

   1.编写一个测试类,你仅仅要作的,就是:

1)  new 一个ServiceHandlerProxy并在构造函数中指定WebService服务器端的URL地址,

2)  调用service方法,其中第一个参数为服务器端WebService实现类的配置名,这里是helloService,第个参数Object[]是参数列表

测试的代码如下

package com.oa.service.test;

 

import com.oa.service.client.*;

 

import junit.framework.*;

 

public class TestHelloService extends TestCase {

  private ServiceHandlerProxy serviceHandlerProxy = null;

 

  protected void setUp() throws Exception {

    super.setUp();

    /**@todo verify the constructors*/

    //这里设置服务器端地址

    String serviceURL = "http://192.168.0.199:8002/OAApp2/services/ServiceHandler";

    serviceHandlerProxy = new ServiceHandlerProxy(serviceURL);

  }

 

  protected void tearDown() throws Exception {

    serviceHandlerProxy = null;

    super.tearDown();

  }

 

  public void testService() throws ServiceHandlerException {

    String serviceName = "helloService";

    Object[] args = new String[]{"参数1", "参数2", "参数3"};

    Object[] actualReturn = serviceHandlerProxy.service(serviceName, args);

    System.out.println("服务器端返回值:"+actualReturn);

    /**@todo fill in the test code*/

  }

 

}

运行代码,执行结果如下

服务器端:

客户端:

 

相关文件: oa-service.rar


    几分稚气,几分洒脱
    埋首程序间,怡然自得时。


相关评论:

prodige2004-07-22 21:13:59 发表评论

写的不错!鼓励!


任卫军2004-07-22 21:15:55 发表评论

以前看过之后,发现这个东东还是比较实用的,me有一点喜欢了:)


陈建江2004-07-22 21:21:46 发表评论

对于复杂的Object的传递,可以采用Bean->Map->Bean的方法实现,
关于Bean->Map->Bean可以通过common包里的BeanUtils的describe和populate方法实现


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值