• 使用axis开发java web service


    在java平台开发web service,最方便、常用的方法是使用axis组件。首先,在axis官方站点下载axis;然后将压缩包中webapps目录下的axis文件夹拷贝到你本地web应用服务器的webapps目录下。这是我们的工作起点,可以开工了。。。

    • 部署web service的方式一般有两种:

    1. 编写java源文件,将文件的java后缀改为jws,然后部署到webapps/axis目录下,axia引擎可以直接执行源文件中定义的java方法为web service;另外,要让你的web应用服务器识别jws文件需要确定已在web.xml中配置servlet(如果你依照本文方法采用拷贝axis目录为工作起点的话,可以不考虑这步):

    <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-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>
    2. 编写web service 部署描述文件(wsdd)。这种方法适用与手头没有java源文件或只需要发布java类中某些特定方法为web service的情况,而且还可以通过在wsdd文件中配置序列化、反序列化器,扩展SOAP定义的基本数据类型,使web service支持复杂数据类型、解决异构平台web service交互问题。可见,此种方法较jws方法更强大、可控。

    具体过程可归结为如下两步:
    1). 部署classes和jar文件
    2). 通知axisEngine加载新服务

    step1:

     在WEB-INF/classes目录下放置已编译的java class文件
     如果java代码已编译为jar文件,可以直接放到WEB-INF/lib下
    step2:

    编写deploy.wsdd文件,可以参考axis压缩包种samples\stock目录下的例子。下面是一个最简单的范例:

    <deployment name="MyService1" xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     <service name="MyService1" provider="java:RPC">
      <parameter name="className" value="MyService1"/>
      <parameter name="allowedMethods" value="*"/>
     </service>
    </deployment>

    deploy.wsdd用来发布web service,aixs通常会将发布的服务(除jws文件定义的)保存到全局配置文件WEB-INF/server-config.wsdd中

    执行java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd

    定义AXISCLASSPATH环境变量,打开一个新的命令提示符窗口,输入下列命令(先定义环境变量,才能执行上面命令):

    set AXIS_HOME=c:\axis
    set AXIS_LIB=%AXIS_HOME%\lib
    set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar

    Trouble shooting:

    1. 以上设置环境变量的命令如果直接拷贝本文给出的到你本地执行,注意你本地文件commons-discovery.jar和commons-logging.jar是否有版本号,如果有,以上命令需要做相应修改;

    2. axis建议的XML parser为Xerces,环境变量给出的也使用这个,而不是java默认的Crimson parser,所以你可能需要到Xerces站点下载此组件,拷贝到WEB-INF/lib下;

    3. 执行以上命令要先确保Tomcat已启动,否则会出现Connection refused错误。

    4. 笔者lib目录下有的jar包为activation.jar axis.jar commons-discovery.jar commons-logging.jar jaxrpc.jar log4j-1.2.9.jar mail.jar NetComponents.jar portal-client.jar saaj.jar wsdl4j.jar xercesImpl.jar xml-apis.jar,共13个,可以对比你是否缺少,否则可能出现java.lang.NoClassDefFoundError错误。


    顺便提一下,不执行AdminClient工具部署web service这步也行,替代的方法是直接编辑server-config.wsdd文件,然后重新启动web服务器。

    • 取消已发布的web service:

    编写undeploy.wsdd文件,内容如下

    <undeployment xmlns="http://xml.apache.org/axis/wsdd/">  

          <service name="MyService1"/>  

    </undeployment> 

     执行如下命令

     java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService undeploy.wsdd

    参考:
    http://ws.apache.org/axis/java/install.html#Introduction

  • 相关阅读:
    神仙题1.0
    一些小技巧(持续更新。。)
    模板(持续更新中。。)
    「CTS2019 | CTSC2019」氪金手游(容斥+概率计数)
    Emacs配置
    AGC034E Complete Compres(dp)
    「清华集训 2017」榕树之心(换根dp)
    [NOI2018]冒泡排序 (卡特兰数)
    「清华集训 2017」小 Y 和二叉树 (贪心)
    「雅礼集训 2018 Day1」图 (dp套dp)
  • 原文地址:https://www.cnblogs.com/andy65007/p/1329571.html
Copyright © 2020-2023  润新知