在现有系统中通过stubs方式部署 webservice

最近,我们的销售系统收到客户的要求,要求能为统一的DLR门户提供webservice接口服务,以期整合管理客户的系统入口。

 

客户提出

1.首先需要系统提供用户名和密码给portal

2.屏蔽账户的添加、修改、删除的功能

3.提供账户添加、删除、修改、获得所有账户的webservice接口,用于portal系统进行统一账户的管理

3.提供DLR清单列表的webservice,用于portal系统对dlr信息的维护

在现有的系统里头,如何改善方能达到目的呢?

采用AXIS框架

1、搭建AXIS环境

安装环境 J2SE SDK 1.4,weblogic8.1sp4,eclipse 3.2。

http://xml.apache.org 网站下载Axis1.4安装包。

将Axis相关包文件放在WEB-INF/lib目录下。

Axis可选的包(需另行下载):activation.jar; mail.jar; xmlsec-1.4.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。

weblogic启动时加载以上jar包(startWeblogic.Cmd)

2、web.xml增加以下

 <!---for web servicewebservice类服务的映射配置-->
  <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>
        org.apache.axis.transport.http.AxisServlet
    </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/AxisServlet</url-pattern>
  </servlet-mapping>
  <!---jws -->
  <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>

3、weblogic.xml增加以下

解决webservice8.1中所带的webservices.jar和axis中的saaj.jar冲突问题

  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>

4、启动weblogic web服务

访问 http://localhost:7002/services,显示AXIS框架的内置服务画面

And now... Some Services

    5、HelloWorld类

    package cn.com.toyota.sales.webservice.hello;

    public class SayHello {
     public String getName(String name){
      return "hello!" + name;
     }
     public int add(int a,int b){
      return a + b;
     }
    }

    6、编写wsdd文件

    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">   
    <service name="SayHello" provider="java:RPC">   
    <parameter name="className" value="cn.com.toyota.sales.webservice.hello.SayHello"/>   
    <parameter name="allowedMethods" value="*"/>   
    </service>   
    </deployment>

    7、编辑一个deploy.bat

    set Axis_Lib=D:/watool/cdist/lib
    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%/
    set Axis_Servlet=http://localhost:7002/AxisServlet
    %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% D:/watool/cdist/www/public_html/WEB-INF/deploy.wsdd

    执行这个批处理文件

    这时候,如果提示成功的话,访问http://localhost:7002/services 就会显示服务列表。

    And now... Some Services

    8、生成客户端client stub文件

    在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。

    WSDL2Java.bat:

    set Output_Path=D:/work/projects/Eclipse_Projects/jdk14/cdist/src
    set Package=cn.com.toyota.sales.webservice.hello
    set Axis_Lib=D:/watool/cdist/lib
    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
    set Axis_Servlet=http://localhost:7002/AxisServlet
    %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:7002/services/SayHello?wsdl

    9、Source生成

    SayHello_PortType.java、SayHelloService.java、SayHelloServiceLocator.java、SayHelloSoapBindingStub.java

    package cn.com.toyota.sales.webservice.hello;

    public class SayHelloClient {
     public void execute() throws Exception {    
      SayHelloService service = new SayHelloServiceLocator();
      System.out.println("----------------------");
      SayHello_PortType client = service.getSayHello() ;    
      String retValue = client.getName("No.1");    
      System.out.println(retValue);    
      }
     /**
      * @param args
      */
     public static void main(String[] args) throws Exception{
      // TODO Auto-generated method stub
      SayHelloClient c = new SayHelloClient();
      c.execute();
     }
    }

    执行以上程序,结果显示:

    ----------------------
    hello!No.1

    好的,成功~

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值