jax-ws是java web service的标准规范,jdk本身就自带了API。但是如果要部署到服务器上的话,还需要一款实现。目前实现有metro(jax-ws ri), axis2, cxf。因为最近用到axis2,所以研究了一下axis2开发jax-ws的方法。编码我就不说了,遵循jax-ws规范就ok了。本文主要介绍一下axis2的配置。
其实没啥好说的,官网文档已经说明了http://axis.apache.org/axis2/java/core/docs/servlet-transport.html
这里简单翻译一下。
1.web.xml的配置
首先配置AxisServlet来接受所有的以services/开头的路径请求。
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-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>
要注意的是url-pattern设置的路径前缀必须和axis2.xml文件中的servicePath参数一致。默认值为services,所以配成如上路径就不用改axis2.xml了。
2.axis2.xml当然要拷贝到WEB-INF目录下,服务器启动时会读取此文件。
3.就这么简单,然后就ok了。启动服务器比如tomcat,访问http://localhost:8080/xx/services/XxService?wsdl就能看到wsdl,后面的开发方式和规范的jax-ws并无二异。
4.如果要支持https,需要改axis2.xml,配置上端口(比如tomcat里配置的8080给http,8443给https)
<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8080</parameter>
</transportReceiver>
<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8443</parameter>
</transportReceiver>
5.如果要集成spring,你的web service必须继承SpringBeanAutowiringSupport,这一点很重要,不继承的话会发现其他bean怎么也注入不了,急的双脚跳。
public class MyServiceImpl extends SpringBeanAutowiringSupport implements MyService {
@Autowired
private MyBusiness myBusiness;
}
如此其他bean(这里是MyBusiness)就能自动装配进我们的web service了。
具体可以参考spring3.1文档的20.5小节,Web services
分享到:
相关推荐
Axis是Apache组织开发的一个开源SOAP库,它是JAX-WS的一个早期实现。尽管JAX-WS标准后来取代了Axis,但在某些旧项目或特定场景下,Axis仍然被用作服务端的支撑库。Axis提供服务部署、WSDL生成、SOAP消息处理等功能...
3. **丰富的API和插件**:CXF提供了一套丰富的API供开发者使用,并且有众多插件,如Spring集成、JAXB绑定和WS-Security等。 4. **易于调试和测试**:CXF提供了内置的测试工具和调试功能,方便开发者对Web服务进行...
在实际应用中,开发人员可能需要配置Axis2服务器,创建和部署Web服务,处理服务调用,集成其他框架(如Spring),或者调试和优化服务性能。通过阅读`axis2-1.6.1-docs.zip`中的文档,可以深入了解这些过程和最佳实践...
你可以使用Spring的JAX-WS或JAX-RPC支持来创建客户端代理。 6. **启动和调用**:启动Spring应用,服务将自动部署在Axis2环境中。客户端可以通过Spring的代理对象调用这些Web服务。 通过以上步骤,我们可以将Spring...
课程内容包括了Axis2的基础知识讲解,如以多种方式编写和发布WebService、JAX-RPC、JAX-WS的使用、复杂类型的传输、WebService会话管理和Axis2模块等关键概念。此外,教程通过三个实际项目加深理解,涵盖了使用Java ...
1. **Axis2**:作为 Apache 的一个开源项目,Axis2 提供了一种灵活的方式来构建和部署 Webservice。它支持 SOAP 和 REST 风格的服务,并且具有丰富的社区支持。 2. **Spring WS**:Spring 框架的一部分,Spring WS...
### 开发Web服务使用Apache Axis2的关键知识点 #### 核心概念:Web服务与Apache Axis2 - **Web服务**是一种跨操作系统、硬件/软件平台的机制,它封装了一个平台特定的应用程序作为服务,该服务可以通过标准的HTTP...
JAX-WS 2.0提供了许多改进,如对JAXB 2.0数据绑定的直接支持,兼容最新的W3C和WS-I标准,如SOAP 1.2、WSDL 1.2和SAAJ 1.3等,以及简化开发过程,方便服务升级,支持异步RPC和非HTTP传输。 JAX-WS 2.0的基础是其参考...
- **Axis2**:Axis1的升级版,支持JAX-WS 2.0,提供了更现代的功能。 - **CXF**:由XFire和Celtix合并而成,是一个广泛使用的Web Services框架,支持JAX-WS 2.0。 - **Metro/JAX-WS RI**:Oracle提供的JAX-WS参考...
标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...
2. 配置Spring的ApplicationContext,定义Bean的定义和依赖。 3. 配置MyBatis的SqlSessionFactory和Mapper接口。 4. 使用Spring MVC构建Web层,定义Controller,处理HTTP请求。 5. 实现WebService服务,可能需要定义...
CXF是Apache基金会的一个项目,它整合了XFire和Axis2的优势,提供了一站式的解决方案,支持SOAP、REST、WS-*标准等。 4. CXF特性 - 强大的工具集,包括WSDL-to-Java和Java-to-WSDL工具。 - 对WS-Security、WS-...
Axis2支持多种传输协议,如HTTP、SMTP等,并且可以处理复杂的WS-*(Web Services Enhancements)规范,如WS-Security、WS-ReliableMessaging等。在学习Axis2时,你可能会接触到以下关键概念: 1. **服务描述语言...
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...
1. **以多种方式编写和发布WebService**:Axis2支持使用POJO(Plain Old Java Object)来快速构建无配置的WebService,这极大地简化了开发流程。 2. **JAX-RPC与JAX-WS**:了解这两种不同的Web服务编程模型,JAX-...
基础部分涵盖了Axis2的多种特性,如JAX-RPC和JAX-WS规范的实现、复杂类型的传输、Web服务会话管理以及Axis2模块的使用。 在项目实践中,首先是一个使用Java Swing构建的个人信息管理系统(PIM)。这个系统展示了...
- **Axis2定义**:Axis2是一款高性能、轻量级且灵活的Web服务引擎,它基于Apache软件基金会开发,作为Apache Axis 1.x的下一代产品,不仅支持SOAP 1.1和SOAP 1.2标准,还兼容RESTful Web服务。 - **应用场景**:广泛...
Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API for XML Web Services)的出现,Axis2应运而生,它提供了更现代的WebServices实现。 **CXF**,全称为CXF XFire eXtended,是另一个...