zoukankan      html  css  js  c++  java
  • Apache-Axis小结

    以前用过axis, 不过好久不弄, 有忘记了。很多很多东西放在收藏夹里面, 但是长时间不去看,结果就是还是不熟悉!现在再简单总结一下吧。

    Axis开发服务器端webservice其实很简单。

    1 下载引入axis相关jar。

    2 新建javaweb项目axis,取名最好就是axis,否则可能报错或者访问无返回, 具体为什么, 没有研究。

      然后,引入axis jar

    3 web.xml加入:

      <listener>
            <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
        </listener>
        
      <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>AdminServlet</servlet-name>
        <display-name>Axis Admin Servlet</display-name>
        <servlet-class>
            org.apache.axis.transport.http.AdminServlet
        </servlet-class>
        <load-on-startup>100</load-on-startup>
      </servlet>


      <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>

    <!-- uncomment this if you want the admin servlet -->
    <!--
    <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
    </servlet-mapping>
    -->

      <servlet>
        <servlet-name>SOAPMonitorService</servlet-name>
        <display-name>SOAPMonitorService</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-mapping>
        <servlet-name>SOAPMonitorService</servlet-name>
        <url-pattern>/SOAPMonitor</url-pattern>
      </servlet-mapping>

      同web.xml目录增加 server-config.wsdd 表示对外提供的webservice, 这个wsdd是axis自带的,一般包含AdminService 、Version 两个webservice。

    两个不可去掉,Adminservice 用来部署其他一些webservice用的。 

    3 部署axis项目,启动tomcat,访问 http://localhost:8080/axis/services

    可以看到刚刚的两个webservice, 同时客户端可以对它进行访问。

    4 部署其他webservice。

    首先:服务端(当前项目axis中)建立一个简单的java类:

    public class HelloWorld {
    public String sayHello()
    {
        return "HELLO WORLD!"; 
    } 
    }

    然后:同样的,我们需要在web.xml目录提供我们的wsdd:myWS.wsdd,以让axis检查到。 wsdd的描述主要是:

    deployment>service>parameter 这样的结构。 service就是表达对外的服务,通常其为服务端(当前项目axis中)一个简单的java类,里面只要提供public方法即可。

    <?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
        <service name="SMSendService" provider="java:RPC">
            <parameter name="className" value="com.smns.SMSender"/>
            <parameter name="allowedMethods" value="*"/>
        </service>
        <service name="HelloService" provider="java:RPC">
            <parameter name="className" value="HelloWorld"/>
            <parameter name="allowedMethods" value="*"/>
        </service>
    </deployment>

    一个wsdd里面可以部署多个webservice

    再次:

    在在web.xml同目录打开命令行,执行下面命令, 将我们新写的webservice部署上。

    java -cp D:wslaaxisWebRootWEB-INFlibactivation.jar;D:wslaaxisWebRootWEB-INFlibaxis-ant.jar;D:wslaaxisWebRootWEB-INFlibaxis.jar;D:wslaaxisWebRootWEB-INFlibcommons-discovery-0.2.jar;D:wslaaxisWebRootWEB-INFlibcommons-logging-1.0.4.jar;D:wslaaxisWebRootWEB-INFlibjaxrpc.jar;D:wslaaxisWebRootWEB-INFliblog4j-1.2.8.jar;D:wslaaxisWebRootWEB-INFlibmailapi.jar;D:wslaaxisWebRootWEB-INFlibsaaj.jar;D:wslaaxisWebRootWEB-INFlibwsdl4j-1.5.1.jar;D:wslaaxisWebRootWEB-INFlibxmlsec-1.4.2.jar;D:wslaaxisWebRootWEB-INFlibxml-apis-2.6.2.jar;D:wslaaxisWebRootWEB-INFlibmail.jar  org.apache.axis.client.AdminClient -1http://localhost:8080/axis/services/AdminService myWS.wsdd

    注:此时,tomcat应该已经启动了,否则无法通过Adminservice部署新的服务。

    然后重新访问 http://localhost:8080/axis/services会发现我们的webservice已经部署上了!

    当然, 我想还有其他方式部署webservice

    然后呢,服务端的webservice就写好了!!

    客户端:

    Axis同时提供一些客户端api对其webservice进行访问。

    首先:创建客户端的java项目(不一定的java项目,只要是java程序即可):TestAxis。

       public static void main(String [] args) throws Exception {
    
           String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloService ";
           Service service = new Service();
           Call     call    = (Call) service.createCall();
           call.setTargetEndpointAddress( new java.net.URL(endpoint) );
           call.setOperationName("sayHello" );
           String res = (String) call.invoke( new Object[] {} );
           System.out.println( res );
       }

    执行,即可看到结果HELLO WORLD! 当然,这个是客户端的结果。 服务端的结果则由服务端决定。

    参考:http://www.cnblogs.com/mingzi/archive/2009/03/09/1406839.html

  • 相关阅读:
    四则运算网页版
    第十周学习进度
    第九周学习进度
    针对石家庄铁道大学官网首页的UI分析
    站立会议10
    站立会议9
    站立会议8
    评价:百度搜索
    LogCat里的错误提示 FATAL EXCEPTION: main
    站立会议7
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/4099446.html
Copyright © 2011-2022 走看看