zoukankan      html  css  js  c++  java
  • Axis2实现webservice的服务端和客户端

    一:WebService服务端 标注:Axis2实现webservice服务端需要的jar包:

    实现方式,步骤如下:

    1. web.xml中配置:

    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    2. 在WEB-INF下新增services/*/META-INF/services.xml (路径格式必须是这样,*表示任意的名称)

    例如:/WebServiceDemoD/WebContent/WEB-INF/services/WebServer/META-INF/services.xml

    services.xml的格式说明:

    <?xml version="1.0" encoding="UTF-8"?>
    <serviceGroup>
    <service name="IHelloService" targetNamespace="http://ws.cms.ivms6.hikvision.comaa">
        <description>Web Service例子 </description>
        <schema schemaNamespace="http://ws.cms.ivms6.hikvision.combb"></schema>
        <parameter name="ServiceClass">com.hikvision.ivms6.cms.ws.newws.impl.Hello</parameter>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
        class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </messageReceivers>
    </service>

    <service name="ISayPersonService" targetNamespace="http://ws.cms.ivms6.hikvision.comcc">
        <description>Web Service例子 </description>
        <schema schemaNamespace="http://ws.cms.ivms6.hikvision.comdd"></schema> 
    <parameter name="ServiceClass">com.hikvision.ivms6.cms.ws.newws.impl.SayHelloTwo</parameter>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
        class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </messageReceivers>
    </service>
    </serviceGroup>

    3.编写Hello.class和SayHelloTwo.class

    Hello.class:

    package com.hikvision.ivms6.cms.ws.newws.impl;

    public class Hello {
    public String sayHello(String name){
      if(!name.equals("")){
          return "hello,"+name;
      }
          return "hello";
      }
    }

    SayHelloTwo.class:

    package com.hikvision.ivms6.cms.ws.newws.impl;

    public class SayHelloTwo {
    public String sayPerson(String personName){
      if(!personName.equals("")){
          return "hello,"+personName;
      }
          return "hello";
     }
    }

    二:WebService的客户端

    第一 RPC方式,不生成客户端代码

    第二,用wsdl2java工具,生成客户端方式调用

    第三,document方式,不生成客户端代码

    这里介绍第一种方式:

    package com.hikvision.ivms6.cms.ws.newws.impl;

    import javax.xml.namespace.QName;

    import org.apache.axis2.AxisFault;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.rpc.client.RPCServiceClient;

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

    //用Java实现调用WebService的客户端程序

    1.    * 应用rpc的方式调用 这种方式就等于远程调用,  
    2.    * 即通过url定位告诉远程服务器,告知方法名称,参数等, 调用远程服务,得到结果。  
    3.    * 使用 org.apache.axis2.rpc.client.RPCServiceClient类调用WebService  


    RPCServiceClient serviceClient;
    try {
    serviceClient = new RPCServiceClient();
    Options options = serviceClient.getOptions();
    // 指定调用WebService的URL
    EndpointReference targetEPR = new EndpointReference( "http://localhost:8080/WebServiceDemoD/services/ISayPersonService");
    options.setTo(targetEPR);
    Object[] entryArgs = new Object[] {"xxj"}; // 调用方法的参数值 
    Class[] classes = new Class[] { String.class }; // 调用方法返回值的数据类型的Class对象 
    QName opName = new QName("http://impl.newws.ws.cms.ivms6.hikvision.com", "sayPerson"); // WSDL文件的命名空间和调用方法名
    String xml = (String)serviceClient.invokeBlocking(opName, entryArgs, classes)[0]; // 执行方法获取返回值 

    System.out.println(xml);


    // 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,
    // 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同。
    // serviceClient.invokeRobust(opName, entryArgs);


    } catch (AxisFault e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

  • 相关阅读:
    Office 365开发环境概览
    Office 365开发概述及生态环境介绍(二)
    介绍Office 365 中文用户社区 4.0
    学习一点Markdown的基本知识
    Office 365开发概述及生态环境介绍(一)
    如何完全卸载OneDrive (Windows 10 64bit)
    国内版Office 365和Azure AAD绑定的问题及解决方案
    Office 365常见问题解答(第一期)
    招聘视音频工程师
    信念、思考、行动-谈谈程序员返回家乡的创业问题
  • 原文地址:https://www.cnblogs.com/xxj-bigshow/p/7233066.html
Copyright © 2011-2022 走看看