spring+springmvc基于axis1.4的webservice开发与https配置(二)

    xiaoxiao2026-08-08  1

    (二)axis环境的配置

    (1)pom.xml依赖配置

    <!-- webservice-axis --> <dependency>    <groupId>commons-discovery</groupId>    <artifactId>commons-discovery</artifactId>    <version>0.5</version> </dependency> <dependency>    <groupId>org.apache.axis</groupId>    <artifactId>axis</artifactId>    <version>1.4</version> </dependency> <dependency>    <groupId>org.apache.axis</groupId>    <artifactId>axis-jaxrpc</artifactId>    <version>1.4</version> </dependency> <dependency>    <groupId>axis</groupId>    <artifactId>axis-wsdl4j</artifactId>    <version>1.5.1</version> </dependency>

    (2)web.xml的配置(访问路径)

    <!--axis相关配置 -->      <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>/services/*</url-pattern>       </servlet-mapping>

    (3)wsdd的编写

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

    <deployment xmlns="http://xml.apache.org/axis/wsdd/"               xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">        <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>  

    <!--名称空间,一般是包名反写,以及暴露出的service名称为xxx,此处名为Validate,可以随自己的想法指定--!>        <wsdl targetNamespace="xxxxx" ></wsdl>      <service name="Validate" provider="java:RPC"> 

    <!--接口的类的完整路径--!>         <parameter name="className" value="xxxxxx"/>  

    <!--*代表默认暴露所有方法--!>            <parameter name="allowedMethods" value="*"/>              </service>          <transport name="http">          <requestFlow>             <handler type="URLMapper"/>          </requestFlow>        </transport>   </deployment>

    (4)服务端的编写

    一个接口类,一个接口实现类

    接口类可以定义需要暴露的方法.具体方法实现由接口实现类做.

    接口实现类需要继承 ServletEndpointSupport类,其中可以@Override的方法有onInit() 方法,表示请求时会先加载的方法.

     

    (5)客户端的调用代码

    public class TestClient { public static void main(String[] args) throws Exception {                    try {         String ret=null;

    //需要调用的方法名,在服务端代码定义的         String Operation="getDate";

    //需要暴露的wsdl地址,若启用ssl加密则是https协议,若无则是http协议,Validate是在wsdd文件中指定的service名称,         String endPoint="http://localhost/xxx/services/Validate?wsdl";

    //在wsdd中指定的名称空间         String targetNameSpace="https://impl.interfaces.service.com";

    //使用call的方式调用         Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endPoint)); call.setOperationName((new QName(targetNameSpace, Operation))); ret=(String) call.invoke(Operation, null); //返回方法调用的结果 System.out.println(ret); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace();         }         }

    }

    }

    转载请注明原文地址: https://ju.6miu.com/read-1310970.html
    最新回复(0)