zoukankan      html  css  js  c++  java
  • WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

    还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现。新建一个包:com.aixs2client。目录结构如下:

    一、服务端:

      1、还是使用com.webservice包里的WebServiceImp.java 文件,但是不使用本地发布,所以需要删除发布代码。

      WebServiceImp.java:

    package com.webservice;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    @WebService
    public class WebServiceImp {
        @WebMethod
        public String getInfo(String id){
            String info="";
            if (id.equals("1")) {
                info="张三";
            }else if (id.equals("2")) {
                info="李四";
            }else if(id.equals("3")){
                info="王五";
            }else if(id.equals("4")) {
                info="赵六";
            }else {
                info="用户不存在";
            }
            return info;
        }
    }

     2、WEB-INF下新建一个xml文件,sun-jaxws.xml,内容如下:

    endpoint 表示使用此配置文件里的参数发布
    name:发布的名称,名字可以随意
    implementation:发布的服务的实现类url-pattern:访问wsdl文档时的路径
    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
    3     <endpoint name="WebServiceDemo" implementation="com.webservice.WebServiceImp" url-pattern="/WebServiceDemo">
    4     </endpoint>
    5 </endpoints>

    3、在WEB-INF下的web.xml中加入servlet配置.内容如下:

      web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>    
        <servlet>
            <servlet-name>jaxws</servlet-name>
            <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>jaxws</servlet-name>
            <url-pattern>/WebServiceDemo</url-pattern>
        </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    load-on-startup:是否应该在web应用程序启动的时候就加载这个servlet,调用servlet中的init()方法,如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。
    url-pattern:请求的路径

    4、配置完成后,将项目部署到Tomcat中,并在浏览器地址栏输入servlet请求的地址:http://127.0.0.1:8080/WebService/WebServiceDemo。

    可以看到如下页面:

    点击WSDL后面的url,看到wsdl文档:

    此时服务端完成,服务已经随着Tomcat的启动和关闭,可以使用Soap UI进行测试。

    二、客户端

    1、在com.aixs2client包下新建ClientService.java

     1 package com.aixs2client;
     2 import org.apache.axiom.om.OMElement;
     3 import org.apache.axis2.AxisFault;
     4 import org.apache.axis2.addressing.EndpointReference;
     5 import org.apache.axis2.client.Options;
     6 import org.apache.axis2.rpc.client.RPCServiceClient;
     7 
     8 import javax.xml.namespace.QName;
     9 public class ClientService {
    10         public static String getServiceInfo(String Id) throws Exception {
    11             String result = null;
    12             //名称空间
    13             String nameSpace="http://webservice.com/";
    14             //服务的方法
    15             String method="getInfo";
    16             //wsdl文档地址
    17             String Url = "http://127.0.0.1:8080/WebService/WebServiceDemo?wsdl";
    18             QName qname = new QName(nameSpace,method);
    19             Object[] param = new Object[] { Id };
    20             try {
    21                 //创建客户端实例
    22                 RPCServiceClient client = new RPCServiceClient();
    23                 Options options = new Options();
    24                 options.setTo(new EndpointReference(Url));
    25                 options.setAction(nameSpace+method);//调用.net等webservice服务是务必加上
    26                 client.setOptions(options);
    27                 OMElement element = client.invokeBlocking(qname, param);
    28                 //获取服务端返回的结果
    29                 result = element.getFirstElement().getText();
    30                 System.out.println(result);
    31             } catch (AxisFault e) {
    32                 e.printStackTrace();
    33             }
    34             return result;
    35         }
    36         public static void main(String[] args) {
    37             try {
    38                 getServiceInfo("1");
    39                 getServiceInfo("3");
    40                 getServiceInfo("4");
    41                 getServiceInfo("100");
    42             } catch (Exception e) {
    43                 e.printStackTrace();
    44             }
    45         }
    46         
    47     }
    48 
    49     

    运行客户端代码,调用服务端方法,结果如下:

  • 相关阅读:
    jenkins配置html报告
    JMeter并发测试(设置集合点)
    jmeter压力测试 设置一秒发送一次请求,一秒两次请求
    jmeter压力测试的简单实例+badboy脚本录制
    JMeter问题集
    英语自然拼读法基本规则和小窍门
    Jmeter工具做性能测试 常见的错误汇总
    如何使用JDK自带工具JConsole
    第七章 JMeter 逻辑控制器
    第六篇:JMeter 断言
  • 原文地址:https://www.cnblogs.com/hyblogs/p/10489451.html
Copyright © 2011-2022 走看看