• 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();
    }
    }
    }

  • 相关阅读:
    sqlserver-一次updlock和withnolock和with check option 的报错原因分析
    类库文件引用web服务报错解决方法-在 ServiceModel 客户端配置部分中,找不到引用协定的默认终结点元素
    用timer自定义计划任务时间
    console 程序随系统启动及隐藏当前程序窗口
    爱积多合作农场正式上线试运营
    CSS-三列布局
    CSS-垂直居中
    form表单重置
    CSS3 选择器
    Tab选项卡
  • 原文地址:https://www.cnblogs.com/xxj-bigshow/p/7233066.html
Copyright © 2020-2023  润新知