在现今的Web 应用中经常使用Spring 框架来装载JavaBean 。如果要想将某些在Spring 中装配的JavaBean 发布成WebService ,使用Axis2 的Spring 感知功能是非常容易做到的。
    在本文的例子中,除了<Tomcat 安装目录>\webapps\axis2 目录及该目录中的相关库外,还需要Spring 框架中的spring.jar 文件,将该文件复制到<Tomcat 安装目录>\webapps\axis2\WEB-INF\lib 目录中。
    下面先建立一个JavaBean (该JavaBean 最终要被发布成WebService ),代码如下:

package service;
import entity.Person;
public class SpringService
{
    private String name;
    private String job;
    public void setName(String name)
    {
        this.name = name;
    }
    public void setJob(String job)
    {
        this.job = job;
    }
    public Person getPerson()
    {
        Person person = new Person();
        person.setName(name);
        person.setJob(job);
        return person;
    }
    public String getGreeting(String name)
    {
        return "hello " + name;
    }
}

其中Person也是一个JavaBean,代码如下:

package entity;
public class Person
{
    private String name;
    private String job;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getJob()
    {
        return job;
    }
    public void setJob(String job)
    {
        this.job = job;
    }
}

将上面两个Java源文件编译后,放到<Tomcat安装目录>\webapps\axis2\WEB-INF\classes目录中。

在<Tomcat安装目录>\webapps\axis2\WEB-INF\web.xml文件中加入下面的内容:

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

在<Tomcat安装目录>\webapps\axis2\WEB-INF目录中建立一个applicationContext.xml文件,该文件是Spring框架用于装配JavaBean的配置文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  <bean id="springService" class="service.SpringService">
     <property name="name" value="姚明" />
     <property name="job" value="职业男篮" /> 
  </bean>   
</beans>

在applicationContext.xml文件中装配了service.SpringService类,并被始化了name和job属性。在配置完SpringService类后,就可以直接在程序中FileSystemXmlApplicationContext类或其他类似功能的类读取applicationContext.xml文件中的内容,并获得SpringService类的对象实例。但现在我们并不这样做,而是将SpringService类发布成WebService。

在<Tomcat安装目录>\webapps\axis2\WEB-INF\lib目录中有一个axis2-spring-1.4.1.jar文件,该文件用于将被装配JavaBean的发布成WebService。在D盘建立一个axi2-spring-ws目录,并在该目录中建立一个META-INF子目录。在META-INF目录中建立一个services.xml文件,内容如下:

<service name="springService">
    <description>
        Spring aware
    </description>
    <parameter name="ServiceObjectSupplier">
        org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    </parameter>
    <parameter name="SpringBeanName">
        springService
    </parameter>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </messageReceivers>
</service>    

在Windows控制台进入axi2-spring-ws目录,并使用jar命令将axi2-spring-ws目录中的内容打包成axi2-spring-ws.aar,然后将该文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\services目录中,启动Tomcat后,就可以访问该WebService了,访问方式与前面几篇文章的访问方式相同。获得wsdl内容的URL如下:

http://localhost:8080/axis2/services/springService?wsdl

在将Spring中的装配JavaBean发布成WebService需要注意以下几点:

1. 由JavaBean编译生成的.class文件需要放在WEB-INF\classes目录中,或打成.jar包后放在WEB-INF\lib目录中,而WEB-INF\services目录中的.aar包中不需要包含.class文件,而只需要包含一个META-INF目录,并在该目录中包含一个services.xml文件即可。

2. services.xml的配置方法与前几篇文章的配置方法类似,只是并不需要使用ServiceClass参数指定要发布成WebService的Java类,而是要指定在applicationContext.xml文件中的装配JavaBean的名称(SpringBeanName参数)。

3. 在services.xml文件中需要通过ServiceObjectSupplier参数指定SpringServletContextObjectSupplier类来获得Spring的ApplicationContext对象。

http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/13/254499.html

WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService相关推荐

  1. WebService大讲堂之Axis2(3):使用services.xml文件发布WebService

    用Axis2 实现Web Service ,虽然可以将POJO 类放在axis2\WEB-INF\pojo 目录中直接发布成Web Service ,这样做不需要进行任何配置,但这些POJO 类不能在 ...

  2. WebService大讲堂之Axis2(6):跨服务会话(Session)管理

    在<WebService大讲堂之Axis2(5):会话(Session)管理>一文中介绍了如何使用Axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个WebService ...

  3. WebService大讲堂之Axis2(4):二进制文件传输

    在< WebService大讲堂之Axis2(2):复合类型数据的传递 >中讲过,如果要传递二进制文件(如图像.音频文件等),可以使用byte[] 作为数据类型进行传递,然后客户端使用RP ...

  4. WebService大讲堂之Axis2(1):用POJO实现0配置的WebService

    Axis2 是一套崭新的WebService 引擎,该版本是对Axis1.x 重新设计的产物.Axis2 不仅支持SOAP1.1 和SOAP1.2 ,还集成了非常流行的REST WebService ...

  5. SAP ECC EHP7 RFC 发布成WebService

    http://www.cnblogs.com/mingdashu/p/6877622.html 1.说明介绍 本文将RFC发布成WebService的详细步骤 不介绍如何创建rfc. 2.WebSer ...

  6. WebService大讲堂之Axis2(5):会话(Session)管理

    WebService给人最直观的感觉就是由一个个方法组成,并在客户端通过SOAP协议调用这些方法.这些方法可能有返回值,也可能没有返回值.虽然这样可以完成一些工具,但这些被调用的方法是孤立的,当一个方 ...

  7. WebService大讲堂之Axis2(8):异步调用WebService

     在前面几篇文章中都是使用同步方式来调用WebService.也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止.使用同步方法来调用WebService ...

  8. WebService大讲堂之Axis2(2):复合类型数据的传递

    在实际的应用中,不仅需要使用WebService 来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据.数组与类(接口)是比较常用的复合类型.在Axis2 中可以直接使用 ...

  9. WebService大讲堂之Axis2(9):编写Axis2模块(Module)

    Axis2可以通过模块(Module)进行扩展.Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口.开发和使用一个Axis2模块的步骤如下: 1. 编写实现Module ...

最新文章

  1. ImageView 控制图片大小
  2. 深入.NET 4.0之,LazyT点滴
  3. java servletcontext_Java ServletContext对象用法解析
  4. [JS]视频总结-第三部分_深入javascript
  5. 【图像修复】浅析:图像修复中的TV模型
  6. IIS 网站服务器性能优化指南
  7. Activity中的任务和返回站
  8. 唯品会Java核心项目VJTools开源了
  9. json学习系列(7)JSONBuilder的用法
  10. imx6 i2c分析
  11. 如何保证投票公平_从声音玩具淘汰、五条人复活,我看到了《乐队的夏天》的不公平...
  12. 熊猫烧香当年到底有多残忍?
  13. Python电影推荐系统
  14. IC前端设计使用的EDA软件
  15. 手把手教你配置国内镜像源
  16. 有没有不收费的恢复数据软件下载 分享人性化数据恢复工具
  17. MATLAB | 全网唯一 ,MATLAB绘制阴影柱状图(填充斜线)
  18. 周未特别节目《前赤壁赋》
  19. java中explain什么意思_explain详解
  20. LDUOJ spj 修改

热门文章

  1. 软件测试用python一般用来做什么-做软件测试的, python应该掌握成怎么样 ?
  2. 我在学python-我在大学毕业后学习Linux、python的一些经验
  3. 自学python推荐书籍同时找哪些来实践-机器学习:Python实践 PDF 原书完整版
  4. python3基础语法-Python3入门(三)——Python基础语法
  5. python填写excel-Python向excel中写入数据的方法
  6. python语言入门m-Python -m参数原理及使用方法解析
  7. python 单词发音-在python中的单词上拆分语音音频文件
  8. python写文件读文件-Python文件读写
  9. 8_Markdown和LaTex的使用中的一些小技巧
  10. 推荐!国外程序员整理的 C++ 资源大全(https://github.com/fffaraz/awesome-cpp)