axis使用详解(服务端/客户端)

来源:互联网 发布:淘宝旺旺客服模板 编辑:程序博客网 时间:2024/05/21 09:30

1、在在WEB-INF下配置web.xml中配置webservice地址

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>12580web</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
classpath:spring.xml
</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8 </param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true </param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!--start of webservice setting -->
    <servlet>
        <servlet-name>axis</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>axis</servlet-name>
        <url-pattern>/webservice/*</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>SOAPMonitorService</servlet-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>
    <!-- end of webservice setting -->
</web-app>

2、在WEB-INF新建server-config.wsdd文件

<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
    xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/">
    <globalConfiguration name="defaultClientConfig">
        <requestFlow name="RequestFlow1" type="">
            <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
                <parameter name="scope" value="session" />
            </handler>
            <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">
                <parameter name="scope" value="request" />
                <parameter name="extension" value=".jwr" />
            </handler>
        </requestFlow>
    </globalConfiguration>
    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" />
    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
    <transport name="http" type="">
        <requestFlow name="RequestFlow1" type="">
            <handler name="Handler1" type="URLMapper" />
            <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
        </requestFlow>
    </transport>
    <transport name="local" type="">
        <responseFlow name="ResponseFlow1" type="">
            <handler name="Handler1" type="LocalResponder" />
        </responseFlow>
    </transport>
    <!-- 每个webservice均需要一个如下配置,name为访问时的请求名 -->
    <service name="helloService" provider="java:RPC" style="rpc" use="encoded">
        <parameter name="scope" value="Request"/>
        <!-- className为实际访问的服务类 -->
        <parameter name="className" value="com.webservice.HelloWebservice"/>
        <!-- allowedMethods为实际访问的服务方法 -->
        <parameter name="allowedMethods" value="doService" />
    </service>
</deployment>

写服务端代码如下:

package com.webservice;


public class HelloWebservice {


public String doService(String name) {
String result = "Hello " + name;
return result;
}
}


至此服务端结束

二、客户端调用代码如下:

客户端调用方法如下:


maven在pom.xml中引入jar包入目如下:

<!--start of webservice setting -->
    <servlet>
        <servlet-name>axis</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>axis</servlet-name>
        <url-pattern>/webservice/*</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>SOAPMonitorService</servlet-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>
    <!-- end of webservice setting -->

2、客户端调用代码如下;

package com.webservice;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;


public class Client {


public static void main(String[] args) throws Exception {


// 指出service所在URL


String endpoint = "http://localhost:8080/gh_ws_module_ze_jyjc_tomcat/webservice/helloService";


// 创建一个服务(service)调用(call)


Service service = new Service();


Call call = (Call) service.createCall();// 通过service创建call对象


// 设置service所在URL


call.setTargetEndpointAddress(new java.net.URL(endpoint));


// 方法名(processService)与MyService.java方法名保持一致


call.setOperationName("doService");


// Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)


String ret = (String) call.invoke(new Object[] { "黄凯" });


System.out.println(ret);


}


}


原创粉丝点击