我之前也没接触过WebService方面的知识,工作需要两个办公系统进行对接,信息同步,所以看了相关的知识。以下我来介绍我的搭建过程。

第一步:将相关的Asix2的jar包引入Web-inf目录下的lib包,相关的包去这个链接可以下载:Asix2的Jar包链接

下载上面图片圈起来的压缩包,然后解压,将解压文件里面的lib包里的jar包全部引入项目web-inf目录下的lib包即可。

第二步:配置项目web.xml

在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>

第三步:在web-inf目录下创建seivices目录,然后在services目录下创建conf文件,然后在conf文件里创建META-INF文件,最后在该文件下创建services.xml文件,目录结构如下所示:

第四步:配置services.xml文件,我的项目用了Spring-MVC的框架,所以这个配置文件需要注意配置spring框架特有的项:

<?xml version="1.0" encoding="UTF-8"?>  
<serviceGroup>    
       <!--  name属性配置WebService的名称 -->  
       <service name="emsService">    
              <description>Web Service</description>    
              <!-- ServiceClass属性配置提供WebService服务类的全类名 -->  
              <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
       <parameter name="SpringBeanName">EmsWebService</parameter> 
       <messageReceivers>    
                     <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    
                     <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />    
              </messageReceivers>    
       </service>   
       
       <service name="vacateService">
             <description>Web Service</description>    
              <!-- ServiceClass属性配置提供WebService服务类的全类名 -->  
              <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
       <parameter name="SpringBeanName">VacateWebService</parameter> 
       <messageReceivers>    
                     <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    
                     <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />    
              </messageReceivers>
       </service> 
<!--     <service name="vacateService">  指定服务名,随便定义 -->
<!--        <description>deleteAtteByVacateDate</description>服务的作用说明,可写可不写 -->
        <!-- 指定要发布的类路径 -->
<!--         <parameter name="SpringBeanName">VacateWebService</parameter>  -->
<!--         <parameter name="ServiceClass">  自定义    name -->
<!--            com.xunfang.comm.webservice.VacateWebServiceImpl      写的类路径 -->
<!--         </parameter>   -->
<!--         类里面的方法,有其他方法就在写个operation标签 -->
<!--         <operation name="deleteAtteByDate">  类里面的方法名 -->
<!--          <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />   -->
<!--         </operation>    -->
<!--      </service> -->
</serviceGroup>

上面有两个Service,我这个项目里分别对应两个业务,相关的注释都有。

配置好后就启动项目,用浏览器访问以下地址:

<!-- 路径的组成:tomcate里配置的ip和端口号 + 项目名 + web.xml里配置的<url-pattern> + service.xml里面指定的服务名 -->
http://localhost:8080/EMS/services/vacateService?wsdl

如果出现以下界面则搭建成功:

最后就写一个测试类就完成了:

package webservicesClient;

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 test {
public static void main(String[] args) {
try {
// 本机tomcat端口默认为8080,参数是wsdl网址的一部分
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/EMS/services/vacateService");
RPCServiceClient sender = new RPCServiceClient();
Options options = sender.getOptions();
options.setTimeOutInMilliSeconds(2 * 20000L);// 超时时间20s
options.setTo(targetEPR);
/**
* 参数: 1:在网页上执行 wsdl后xs:schema标签的targetNamespace路径
* <xs:schema targetNamespace="http://test.axiswevservice.com"> 2:
* <xs:element name="test"> ======这个标签中name的值
* com.xunfang.comm.webservice

*/
QName qname = new QName("http://webservice.comm.xunfang.com", "deleteAtteByDate");
String userName = "3868"; // 方法的入参
String startDate = "2017-07-21";
String endDate = "2017-07-22";
String str = userName + "," + startDate + "," + endDate;
Object[] param = new Object[] { str };

Class<?>[] types = new Class[] { String.class }; // 这是针对返值类型的
/**
* RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。
* invokeBlocking方法有三个参数 第一个参数的类型是QName对象,表示要调用的方法名;
* 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
* 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。

* 当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。
*/
Object[] response1 = sender.invokeBlocking(qname, param, types);
System.out.println(response1[0]);
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

运行结果如下:

Asix2搭建Spring-MVC的WebService相关推荐

  1. MAC OS X El CAPITAN 搭建SPRING MVC (1)- 目录、包名、创建web.xml

    一. 下载STS(Spring Tool Suite) 官方地址:http://spring.io/tools/sts 下载spring tool suite for mac 最新版本.这个IDE是很 ...

  2. 搭建Spring MVC 4开发环境八步走

    Spring MVC作为SpringFrameWork的产品,自诞生之日,就受到广泛开发者的关注,如今Spring MVC在Java中的发展可谓是蒸蒸日上,如今如果再有开发者说,不了解Spring M ...

  3. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  4. 搭建Spring MVC详解

    文章目录 一.Spring 二.component-scan 三.搭建Spring MVC(一) 四.搭建Servlet 五.搭建Spring MVC(二) 六.搭建Spring MVC(三) 一.S ...

  5. [Java,MVC] Eclipse下搭建Spring MVC

    转自:http://blog.csdn.net/blue_jjw/article/details/8752466 一.新建Dynamic Web Project 一个web工程最基本的,只看3个地方, ...

  6. Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境

    Spring MVC 概述 新建Spring MVC Project 分析IDE建立的工程 Maven dependencies configuration Spring MVC configurat ...

  7. 搭建spring MVC项目

    首先,是要放入spring mvc所需要的包: 如果不用json功能就不需要json和gson包,还有数据库驱动包,我这里是用的postgresql数据库,其他数据库需替换掉这个包 然后就是配置文件: ...

  8. 在idea中创建maven工程,搭建spring MVC框架,完成和servlet相似的操作

    1.创建一个maven项目,配置在前文有 2.配置spingmvc(因为是maven所以不用导入jar包) 1.新建一个项目,spingmvc-02-hell,添加web资源的支持,确定导入了Spin ...

  9. Spring 详解(四):Spring MVC

    1. 跟踪Spring请求 使用Spring构建的Web程序中,请求最先接触到的是Spring中的DispatcherServlet.从图中可以看见DispatcherServlet相当一个调度者,所 ...

  10. Spring系列之一 Spring MVC

    摘要: 最近在看Spring的书,之前一直跟着项目做,虽然项目用到了Spring的很多功能,但是我很少有机会在工作的项目中去配置Spring.感觉只有理论是不够的,虽然只是用Spring的配置让人感觉 ...

最新文章

  1. Linux搭建BT下载服务器,linux下搭建bt服务器–xbt篇
  2. 使用meta属性禁用手机浏览器的缩放功能
  3. 2017年5月面试总结
  4. Mysql 内部结构 / Replication | 层次结构
  5. 家长对孩子的期望 from father
  6. 在Android开发中怎样使用Application类
  7. java连接sql server数据库的代码如何改成连接mysql_Java连接sql server或mysql数据库(代码)...
  8. mysql存钱用什么类型_电脑液晶显示器面板类型有哪些,显示器用什么面板比较好?...
  9. bzoj 2440: [中山市选2011]完全平方数(二分+莫比乌斯函数)
  10. SpringMVC设置不拦截静态资源css,js
  11. Layer success 层弹出后的成功回调方法
  12. 吉米多维奇数学分析习题集每日一题--泰勒公式习题1377
  13. 使用 Android PreferenceScreen 偏好显示类(android.preference.PreferenceScreen)
  14. C# 导出Excel并插入二维码图片
  15. python获取软件内数据_三种 Python 网络内容抓取工具与爬虫
  16. python 检查域名是否可以访问_利用Python实现DGA域名检测
  17. Hyper-v安装CentOS
  18. 为什么站点访问慢?请收好这份 Web 服务器性能提升的总结
  19. 手机怎么伪原创火山小视频 本地短视频去水印在线
  20. 【九九乘法表】javascript做九九乘法表

热门文章

  1. 第9次博文:轻触按键的接通开关方法
  2. 亚马逊国际获得AMAZON商品详情 关键字搜索API 调用案例分享
  3. 对人工智能的法律主体地位的思考
  4. python opencv SURF(加速稳健特征)
  5. 香橙派pi5安装debian操作系统
  6. Step7 Scout Simotion在线时无法在线的一个原因
  7. iPhone/iOS开启个人热点的相关位置调整小结
  8. TensorFlow中张量的约减(Reduce)方向
  9. html添加按钮语句,快速入门:添加按钮 (HTML)
  10. BootStrap table的各种样式效果