最近做一个联通彩信接入的上行模块开发时碰到的问题。
需求描述:开发一个webservice接收来自彩信中心的消息(MO)
使用框架:spring2.5.3 + axis2 1.4.1 (jax-ws2.0) + mina
问题描述:由于是使用jax-ws技术因此根据WSDL生成的代码为annotation的,因此无需配置即可在axis2中发布,所以问题出现:
1、想通过配置来对象注入到service中无法实现(在此时没找到解决此问题的部分)。
2、在serivce中使用axis2 api读取soap消息,消息始终为null。
(如果不使用annotation来描述webservice,是可以使用配置来注入bean的,在server端也能正常的读取soap消息。)
解决办法:(既然是使用annotation来描述webservice,那当然得用spring annotation来注入了。读取soap消息也一样)
1、用@Autowired来修饰需注入的bean,目标类需继承SpringBeanAutowiringSupport(这个功能应该是在2.5.3的版本中增加的)。
2、使用@Resource来修饰需要捕获的soap消息。
代码:
import java.util.Map;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
@WebService(targetNamespace = "http://www.demon.service",serviceName = "HelloService", name = "demon")
public class Hello extends SpringBeanAutowiringSupport{
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(Hello.class);
@Autowired
private XXBean bean;//此处的bean的名称要与spring中bean的id一致。
@Resource
WebServiceContext wsContext;
@WebMethod(operationName = "sayHello")
public String sayHello(String name){
javax.xml.ws.handler.MessageContext context = wsContext.getMessageContext();
}
}
参考资料:http://docs.huihoo.com/spring/2.5.x/zh-cn/remoting.html
https://jax-ws.dev.java.net/articles/MessageContext.html
分享到:
相关推荐
标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...
在本项目中,可能是通过JAX-WS或者CXF等实现。开发者可以创建SOAP(Simple Object Access Protocol)服务,对外提供API,允许其他系统调用,实现跨平台的数据交换。Spring框架也提供了对WebService的支持,可以方便...
1. **Spring Boot与Web服务**:Spring Boot支持多种Web服务技术,包括JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。由于题目提及的是Axis1.4,这是一个基于JAX-RPC的Web...
2. **Spring WS**:Spring 框架的一部分,Spring WS 提供了一种简洁的方式来创建 Webservice 应用。它与 Spring 生态系统的其他组件紧密结合,可以轻松地与其他 Spring 组件集成。 3. **JAX-WS (Java API for XML ...
2. **JAX-RPC与JAX-WS**:了解这两种不同的Web服务编程模型,JAX-RPC是早期的Web服务标准,而JAX-WS则是基于WS-I基本绑定的现代Web服务API,提供了更高效、更符合标准的处理方式。 3. **复杂类型传输**:学习如何...
CXF是Apache基金会的一个项目,它整合了XFire和Axis2的优势,提供了一站式的解决方案,支持SOAP、REST、WS-*标准等。 4. CXF特性 - 强大的工具集,包括WSDL-to-Java和Java-to-WSDL工具。 - 对WS-Security、WS-...
- **Axis2定义**:Axis2是一款高性能、轻量级且灵活的Web服务引擎,它基于Apache软件基金会开发,作为Apache Axis 1.x的下一代产品,不仅支持SOAP 1.1和SOAP 1.2标准,还兼容RESTful Web服务。 - **应用场景**:广泛...
【描述】:虽然有多种Web服务技术,如XFire、CXF和JAX-WS,但Axis2以其易用性和与Spring的无缝集成而备受青睐。通过 Axis2,开发者可以快速地创建和部署Web服务,同时利用Spring的强大功能进行依赖注入和事务管理。 ...
在本篇中,我们将深入探讨Axis在Webservice开发中的重要性、使用方法以及如何将提供的"axis开发包"整合到你的项目中。 1. **什么是Web服务?** Web服务是一种通过互联网交换业务逻辑和数据的方法。它们基于开放...
课程内容包括了Axis2的基础知识讲解,如以多种方式编写和发布WebService、JAX-RPC、JAX-WS的使用、复杂类型的传输、WebService会话管理和Axis2模块等关键概念。此外,教程通过三个实际项目加深理解,涵盖了使用Java ...
在实际开发中,开发者通常会使用Axis2来创建服务,然后使用CXF来提供更高级的功能,如REST支持和与其他系统的互操作性。 在压缩包文件名称列表中,我们只看到了"axis2-1.8.0apache-cxf-3.4.4",这意味着压缩包内...
Axis1主要基于JAX-RPC,而Axis2则升级为基于JAX-WS的标准。Axis2提供了更好的性能和模块化设计,支持多种传输协议(如HTTP、HTTPS、SMTP),并且集成了MTOM和SwA优化机制,用于处理大型二进制数据。 4. Axis2详解:...
标题中的"webservice所需lib开发包"指的是为了进行Web服务开发,开发者需要的一系列Java库文件。这些库文件包含了实现Web服务功能的各种API和工具,它们是开发者构建Web服务客户端或服务端应用程序的基础。 描述中...
标题中提到的"webservice整合spring的需要的jar(在项目的lib里)",意味着在构建一个整合了Spring和Web服务的项目时,需要在项目的库(lib)目录下包含特定的JAR文件。这些JAR文件通常包含了实现Web服务调用和...
2. **JAX-WS和JAX-RS**:JAX-WS是用于构建SOAP Web服务的标准,而JAX-RS则用于构建RESTful服务。CXF支持这两种风格,允许开发人员根据需求选择合适的服务类型。 3. **创建Web服务**:在CXF中,可以通过注解或XML...
在本压缩包中,CXF的示例可能包括JAX-WS(Java API for XML Web Services)的服务端和客户端代码,使用注解来定义服务接口和实现,以及配置文件(如cxf.xml或spring配置文件)用于服务的启动和部署。 在服务端,...
本文主要探讨了四种方法,它们分别是JAX-WS 2.0、Apache Axis、Spring和XFire。 首先,JAX-WS 2.0是Java API for XML Web Services的简称,是Java中用于构建Web服务的主流规范。它取代了早期的JAX-RPC 1.0,并基于...
1. **多种方式编写和发布Web服务**:Axis2支持JAX-RPC和JAX-WS规范,允许开发者选择适合他们项目的API来创建Web服务。同时,它还提供了RESTful Web服务的支持,与SOAP相比,REST更简洁,更适合轻量级的交互。 2. **...
在本教程中,我们将深入探讨如何使用Spring Boot与Apache CXF整合来创建并提供Web服务。Spring Boot以其简化Java应用程序开发的特性而受到广泛欢迎,而CXF则是一个流行的开源框架,用于构建和消费Web服务。当我们...