AXIS2中将Spring装配的JavaBean发布为WebService

本文介绍如何使用Spring框架和Axis2将JavaBean发布为WebService。首先,将所需的Spring库和编译后的JavaBean放置在正确的位置。接着,配置Spring的applicationContext.xml以装配JavaBean。最后,利用Axis2的spring-spring功能进行WebService发布。

在现今的 Web应用中经常使用 Spring框架来装载 JavaBean。如果要想将某些在 Spring中装配的 JavaBean发布成 WebService,使用 Axis2的 Spring感知功能是非常容易做到的。
在本文的例子中,除了 <Tomcat安装目录 >\webapps\axis2目录及该目录中的相关库外,还需要 Spring框架中的 spring.jar文件,将该文件复制到 <Tomcat安装目录 >\webapps\axis2\WEB-INF\lib目录中。
下面先建立一个 JavaBean(该 JavaBean最终要被发布成 WebService),代码如下:
packageservice;
importentity.Person;
public classSpringService
{
privateString name;
privateString job;
public voidsetName(String name)
{
this .name=name;
}
public voidsetJob(String job)
{
this .job=job;
}
publicPerson getPerson()
{
Person person= newPerson();
person.setName(name);
person.setJob(job);
returnperson;
}
publicString getGreeting(String name)
{
return " hello" +name;
}
}
其中 Person也是一个 JavaBean,代码如下:
packageentity;
public classPerson
{
privateString name;
privateString job;
publicString getName()
{
returnname;
}
public voidsetName(String name)
{
this .name=name;
}
publicString getJob()
{
returnjob;
}
public voidsetJob(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" ?>
< beansxmlns ="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" >
< beanid ="springService"class ="service.SpringService" >
< propertyname ="name"value ="姚明" />
< propertyname ="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文件,内容如下:

< servicename ="springService" >
< description >
Spring aware
</ description >
< parametername ="ServiceObjectSupplier" >
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</ parameter >
< parametername ="SpringBeanName" >
springService
</ parameter >
< messageReceivers >
< messageReceivermep ="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对象。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值