废话不多说,根据步骤操作
最近需要咋项目中使用web service,但是在和spring集成的过程中,无法通过依赖注入的方式获取到service层的实例,
经过查找相关资料进行验证,得到如下结论
1:在项目中添加spring和axis2支持,这步是必须的,关于怎么添加spring和axis2支持在这里就不多说了!
2:axis2集成spring需要额外的添加axis2-spring-1.6.2.jar包
3:在application.xml文件中添加如下代码
<!-- axis2整合spring需要如下配置 -->
<bean id= "applicationContext"
class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
4:在services.xml是如下配置
<serviceGroup>
<service name="messageService">
<description>
This service is common webService.
</description>
<!-- axis2整合spring需要如下配置 -->
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
</parameter>
<!-- axis2整合spring,如下配置是服务的ben(注解名称) -->
<parameter name="SpringBeanName">messageWebService</parameter>
<!-- 服务接口,这里配置的是接口,真正的实现类是MessageWebServiceImpl -->
<parameter name="ServiceClass">com.eshore.fssc.ws.message.service.MessageWebService</parameter>
<!-- 只读 -->
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<!-- 读写 -->
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
然后在接口中就可以通过如下配置获取得到相应的service层实例,记得接口服务一定要抽象于接口
@Autowired
private MessageService messageService;
5:以下是我暴露出的接口服务
@Service("messageWebService")
public class MessageWebServiceImpl implements MessageWebService{
@Autowired
private MessageService messageService;
/*
* @ 版本信息:2013-08-06 pj add
*
* @ 功能说明:提供同步代办接口服务
*/
public ResultDto[] synSubSystemMessage(MessageDto[] messageDtos) {
System.out.println(messageService);
return messageService.synSubSystemMessage(messageDtos);
}
/*
* @ 版本信息:2013-08-06 pj add
*
* @ 功能说明:提供同步代办状态接口服务
*/
public ResultDto[] synCompleteMessage(MessageDto[] messageDtos) {
return messageService.synCompleteMessage(messageDtos);
}
}
/*
接口
*/
public interface MessageWebService {
public ResultDto[] synSubSystemMessage(MessageDto[] messageDtos);
public ResultDto[] synCompleteMessage(MessageDto[] messageDtos);
}