Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。
1.在web.xml添加cxf对应的servlet
<servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/data/ws/*</url-pattern> </servlet-mapping>
当我们输入http://locahost:8080/test/date/ws/,我们就能看到web下的所有webservice。
2.定义WEBService接口及实现
package com.vcredit.jdev.obiz.account.controller; import java.net.MalformedURLException; import javax.jws.WebParam; import javax.jws.WebService; import com.vcredit.jdev.obiz.ws.entity.CommonContent; import com.vcredit.jdev.obiz.ws.entity.LoginContent; import com.vcredit.jdev.obiz.ws.entity.WSResponse; /** * @ClassName: AccountWebService * @Description: TODO(account module WebServcie interface CXF ?wsdl) * @author dk * @date 2014年8月18日 下午1:36:17 * */ @WebService public interface AccountWebService { public WSResponse<LoginContent> login(@WebParam(name="loginName") String loginName,@WebParam(name="password")String password); public WSResponse<CommonContent> addLoginAccount(@WebParam(name="username") String username,@WebParam(name="mobile") String mobile,@WebParam(name="password") String password,@WebParam(name="verifyCode") String verifyCode) throws Exception; public WSResponse<CommonContent> updatePassword(@WebParam(name="username") String username,@WebParam(name="secureCode") Long secureCode,@WebParam(name="oldPassword") String oldPassword,@WebParam(name="newPassword") String newPassword); public WSResponse<CommonContent> resetPassword(@WebParam(name="mobile") String mobile,@WebParam(name="newPassword") String newPassword,@WebParam(name="verifyCode") String verifyCode); public WSResponse<CommonContent> checkCellPhone(@WebParam(name="mobile") String mobile); public WSResponse<CommonContent> checkVerifyCode(@WebParam(name="mobile") String mobile,@WebParam(name="verifyCode") String verifyCode); public WSResponse<CommonContent> sendVerifyCode(@WebParam(name="mobile") String mobile) throws MalformedURLException; }
实现类:
package com.vcredit.jdev.obiz.account.controller; import java.net.MalformedURLException; import javax.jws.WebService; import net.gplatform.sudoor.server.security.model.auth.SSAuth; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.vcredit.jdev.obiz.account.model.Login; import com.vcredit.jdev.obiz.account.model.PasswordReset; import com.vcredit.jdev.obiz.account.model.PhoneService; import com.vcredit.jdev.obiz.account.model.Register; import com.vcredit.jdev.obiz.account.model.entity.Account; import com.vcredit.jdev.obiz.base.BaseConstants; import com.vcredit.jdev.obiz.ws.entity.CommonContent; import com.vcredit.jdev.obiz.ws.entity.LoginContent; import com.vcredit.jdev.obiz.ws.entity.WSResponse; @Component @WebService public class AccountWebServiceImpl implements AccountWebService { private Logger logger = LoggerFactory.getLogger(AccountWebServiceImpl.class); @Autowired private SSAuth auth; @Autowired private Register register; @Autowired private Login login; @Autowired private PasswordReset passwordReset; @Autowired private PhoneService phoneService; @Override public WSResponse<LoginContent> login(String loginName, String password) { if(StringUtils.isBlank(loginName)){ return WSResponse.errorResponse(new LoginContent(false, "-2",-1L,"UserKind",-1L)); } if(StringUtils.isBlank(password)){ return WSResponse.errorResponse(new LoginContent(false, "-2",-1L,"UserKind",-1L)); } Account account = register.getAccountByLoginName(loginName); if(account != null){ auth.authenticate(account.getId().toString(), password); }else{ return WSResponse.errorResponse(new LoginContent(false, "-2",-1L,"UserKind",-1L)); } return WSResponse.successResponse(new LoginContent(true, "2", account.getId(), "UserKind", 1L)); } } 。。。。。
@WebService
@WebParam(name="loginName") 参数的设置,明确参数。当不设置,会出现arg0,arg1的表示参数
3.在spring.xml添加Bean
<?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:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:endpoint id="accountServiceEndPoint" implementor="#accountServiceImpl" address="/soap/account/accountService" /> <jaxws:endpoint id="loginService" implementor="#loginServiceImpl" address="/soap/account/loginService" /> <jaxws:endpoint id="newConsumerService" implementor="#newConsumerServiceImpl" address="/soap/account/newConsumerService" /> <jaxws:endpoint id="featureService" implementor="#featureServiceImpl" address="/soap/account/featureService" /> <jaxws:endpoint id="userService" implementor="#userServiceImpl" address="/soap/account/userService" /> <jaxws:endpoint id="accountWebService" implementor="#accountWebServiceImpl" address="/soap/account/accountWebService" /> <jaxws:client id="accountServiceClient" serviceClass="com.vcredit.jdev.obiz.example.controller.AccountService" address="http://localhost:8080/obiz/data/ws/soap/account/accountService" /> </beans>
4.pom.xml
<properties> <cxf.version>3.0.0</cxf.version> </properties> <build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <includes> <include>*.wsdl</include> </includes> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-ws-security</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>${cxf.version}</version> </dependency>
相关推荐
总之,Spring集成CXF调用Web Services是一个强大的组合,它提供了灵活的配置方式和强大的功能,使开发者能够更高效地构建和维护Web服务应用。通过理解并实践上述知识点,开发者可以更好地驾驭这一技术栈。
首先,让我们了解什么是Spring集成CXF。Spring框架提供了对CXF的支持,允许开发者在Spring容器中管理和配置CXF服务。这样,我们可以利用Spring的强大功能来管理CXF的服务生命周期,同时利用CXF的Web服务实现能力。 ...
本示例将探讨如何通过Spring集成Cxf来暴露Web服务,帮助开发者更好地理解和实现这一功能。 首先,我们需要了解Spring与Cxf的基本概念。Spring框架提供了一个全面的编程和配置模型,用于简化企业级Java应用程序的...
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
总结来说,Spring集成CXF的例子展示了如何在Spring环境下快速搭建一个Web服务,通过定义服务接口、实现接口、配置Spring和Web容器,最后通过测试验证服务是否正常运行。这个过程涉及到了Spring的bean管理和CXF的Web...
首先,我们来看看标题“spring集成cxf客户端和服务器端demo”。这表明我们将讨论如何同时设置Spring和CXF来创建一个能够提供和消费Web服务的系统。这通常涉及到以下步骤: 1. **配置Spring上下文**:我们需要创建一...
### Spring集成CXF(WebService) #### WebService概览 WebService是一种构建应用程序的普遍模型,能够跨平台、跨语言实现服务的交互与共享。它是一种自包含、自描述、模块化的应用,可以发布、定位并通过Web调用...
本实例将详细介绍如何在Spring环境中集成CXF,并使用WSS4J进行安全认证。 **一、Spring与CXF集成** 1. **配置CXFServlet**: 首先,我们需要在Spring的`web.xml`配置文件中声明CXF的Servlet,如`...
**Spring集成CXF详解** Spring框架是Java领域中广泛使用的轻量级开源框架,它以其IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性深受开发者喜爱。而CXF则是一个强大的Web服务开发框架,它...
使用spring集成cxf,在两个web project里发布及调用webservice server端使用spring+springmvc+mybatis+cxf,client端使用struts2+spring+hibernate+cxf 两个工程均为myeclipse project,包含所有除myeclipse自带以外...
5. **Spring MVC集成**:如果你的项目使用了Spring MVC,你可以将CXF服务与控制器结合,提供RESTful API,使得前后端交互更加便捷。 6. **异常处理**:Spring和CXF结合,可以统一处理服务调用中的异常,提供更优雅...
在本篇中,我们将深入探讨如何将Apache CXF 2.7.5版本与Spring 3.0框架集成,以便在Java应用程序中创建和消费Web服务。 **一、CXF简介** Apache CXF是一个全面的Web服务框架,它支持多种协议,如SOAP、RESTful HTTP...
- `cxf.html`:可能是关于CXF与Spring集成的教程或指南,详细解释了集成过程和注意事项。 - `cxfwebservice.html`:可能详细介绍了如何使用CXF创建和部署Web服务,以及如何进行测试。 - `ecnuWebService.zip`:可能...
【标题】"Spring CXF DEMO代码...通过深入研究这些代码,你可以增强自己在Spring集成CXF进行Web服务开发的能力,这对构建企业级分布式系统非常有帮助。同时,可以参考博文链接(已提供)获取更详细的解释和上下文信息。
**Spring整合CXF详解** Spring框架与Apache CXF的整合是企业级Java应用中常见的实践,主要用于构建基于SOAP和RESTful服务。这个"Spring整合CXF demo"项目提供了一个直观的例子,帮助开发者理解如何在Spring环境中...
首先,集成CXF和Spring的关键在于利用Spring的IoC(Inversion of Control)容器来管理CXF的服务。这包括创建服务端点接口、实现该接口的服务类,以及配置Spring XML文件来定义这些组件。在"Hello World"示例中,可能...
7. **Spring Boot集成** 如果使用Spring Boot,整合过程会更加简洁。只需要在`pom.xml`中添加CXF和Spring Web的依赖,然后在`@SpringBootApplication`类上启用Web服务支持,或者在配置类中定义CXF的bean。Spring ...
4. **使用Spring集成CXF**: - 我们需要在Spring配置文件中声明CXF的bean,例如`JaxWsServerFactoryBean`,并配置服务的地址和服务类。 - 这样,Spring会负责实例化和管理这些bean,而CXF会处理Web服务的发布和...