- 浏览: 516400 次
- 性别:
- 来自: 远方
文章分类
最新评论
-
futoviny:
挺有用的 javax.xml.ws.Holder
CXF学习笔记---让通过参数传递数据 -
zqb666kkk:
能提供下示例demo吗
CXF学习笔记---给CXF加一把锁WS_SECURITY应用 -
hello_world_wdq:
真是坑爹,这能用吗,害我半天时间浪费了
Extjs学习总结---RowExpander 的异步调用 -
ubuntu的疯狂:
第一段代码怎么用????求解释!!弄了很久还是不得结果……
Extjs学习总结---RowExpander 的异步调用 -
107x:
不错,谢谢分享!
[log4j]Slf4j的包冲突
在这个Demo中我如何使用Spring 2.5 和 Apache CXF 2.0建立和运行一个web service。我非常喜欢CXF它同时支持WSDL-first 和 Java-first web service 开发。这个示例中使用的是Java-first web service。
项目SETUP
1.去CXF下一个Apache CXF,现在已经是2.1.2了。官方网站上有一section of the CXF user documentation that deals with writing a service with Spring,对新手应该有一些用。在那个示例中只是返回了一个string. 我们试着返回一些复杂的内容,试着使用databinding。
项目需要的JAR
CXF itself
• cxf.jar
CXF dependencies
• commons-logging-1.1.jar
• geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
• geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
• geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
• geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
• geronimo-stax-api_1.0_spec-1.0.jar
• geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
• jaxb-api-2.0.jar
• jaxb-impl-2.0.5.jar
• jaxws-api-2.0.jar
• neethi-2.0.2.jar
• saaj-api-1.3.jar
• saaj-impl-1.3.jar
• wsdl4j-1.6.1.jar
• wstx-asl-3.2.1.jar
• XmlSchema-1.3.2.jar
• xml-resolver-1.2.jar
Aegis dependencies
jdom-1.0.jar Aegis databinding 需要
jaxen-1.1.1.jar
cxf-rt-databinding-aegis-2.1.2.jar
Spring dependencies
这个就参照常用spring配置了
下面废话少说,开始
创建一个表Vendor的Maintains
Create the object model
内容和HelloWorld差不多,但使用了一些XMl Binding的能力
其中@IgnoreProperty annotation是Aegis databinding的一部分。相当于告诉该字段是只读的。
创建 service interface
@WebService 和@WebParam是JAX-WS annotations。如果你想完整的标注就看文档去。
创建实现类
我用的是Hibernate,反正就是给一个结果。
@WebService 再次标注这是一个Web Service
创建配置文件
注意Aegis data binding部分就是数据绑定了。我采用的是默认绑定。还可以自己定义绑定。这里有一个问题。加了CXF:BUS但始终报错,以后解决了。然后发布,写出客户端就可以了。
项目SETUP
1.去CXF下一个Apache CXF,现在已经是2.1.2了。官方网站上有一section of the CXF user documentation that deals with writing a service with Spring,对新手应该有一些用。在那个示例中只是返回了一个string. 我们试着返回一些复杂的内容,试着使用databinding。
项目需要的JAR
CXF itself
• cxf.jar
CXF dependencies
• commons-logging-1.1.jar
• geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
• geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
• geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
• geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
• geronimo-stax-api_1.0_spec-1.0.jar
• geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
• jaxb-api-2.0.jar
• jaxb-impl-2.0.5.jar
• jaxws-api-2.0.jar
• neethi-2.0.2.jar
• saaj-api-1.3.jar
• saaj-impl-1.3.jar
• wsdl4j-1.6.1.jar
• wstx-asl-3.2.1.jar
• XmlSchema-1.3.2.jar
• xml-resolver-1.2.jar
Aegis dependencies
jdom-1.0.jar Aegis databinding 需要
jaxen-1.1.1.jar
cxf-rt-databinding-aegis-2.1.2.jar
Spring dependencies
这个就参照常用spring配置了
下面废话少说,开始
创建一个表Vendor的Maintains
Create the object model
内容和HelloWorld差不多,但使用了一些XMl Binding的能力
import java.math.BigDecimal; import java.util.Date; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.hibernate.annotations.Type; @Entity public class Vendor extends AbstractBaseEntity { /** * */ private static final long serialVersionUID = -8346265790105564327L; private String VendorID; private String EngName; private String ChnName; private String Street1; private String Street2; private String City; private String ProvinceID; private String Zip; private String PoTel; private String PoFax; private String PoContact; private String PoEmail; private String ApTel; private String ApFax; private String ApContact; private String ApEmail; private String ProductContract; private Integer MinOrderQty; private BigDecimal MinOrderAmount; private Integer Msi; private String Language; private String Status; private Integer PoSentBy; private String ApTerms; private String FobCode; private String ShipVia; private String VendorType; private Date ChgTime; private String ChgBy; @Id public String getVendorID() { return VendorID; } public void setVendorID(String vendorID) { this.VendorID = vendorID; } public String getApContact() { return ApContact; } public void setApContact(String contact) { ApContact = contact; } public String getApEmail() { return ApEmail; } public void setApEmail(String email) { ApEmail = email; } public String getApFax() { return ApFax; } public void setApFax(String fax) { ApFax = fax; } public String getApTel() { return ApTel; } public void setApTel(String tel) { ApTel = tel; } public String getApTerms() { return ApTerms; } public void setApTerms(String terms) { ApTerms = terms; } public String getChgBy() { return ChgBy; } public void setChgBy(String chgBy) { this.ChgBy = chgBy; } public Date getChgTime() { return ChgTime; } public void setChgTime(Date chgTime) { this.ChgTime = chgTime; } public String getChnName() { return ChnName; } public void setChnName(String chnName) { this.ChnName = chnName; } public String getCity() { return City; } public void setCity(String city) { this.City = city; } public String getEngName() { return EngName; } public void setEngName(String engName) { this.EngName = engName; } public String getFobCode() { return FobCode; } public void setFobCode(String code) { FobCode = code; } public String getLanguage() { return Language; } public void setLanguage(String language) { this.Language = language; } public BigDecimal getMinOrderAmount() { return MinOrderAmount; } public void setMinOrderAmount(BigDecimal minOrderAmount) { this.MinOrderAmount = minOrderAmount; } public Integer getMinOrderQty() { return MinOrderQty; } public void setMinOrderQty(Integer minOrderQty) { this.MinOrderQty = minOrderQty; } public Integer getMsi() { return Msi; } public void setMsi(Integer msi) { Msi = msi; } public String getPoContact() { return PoContact; } public void setPoContact(String contact) { PoContact = contact; } public String getPoEmail() { return PoEmail; } public void setPoEmail(String email) { PoEmail = email; } public String getPoFax() { return PoFax; } public void setPoFax(String fax) { PoFax = fax; } public Integer getPoSentBy() { return PoSentBy; } public void setPoSentBy(Integer sentBy) { PoSentBy = sentBy; } public String getPoTel() { return PoTel; } public void setPoTel(String tel) { PoTel = tel; } public String getProductContract() { return ProductContract; } public void setProductContract(String productContract) { this.ProductContract = productContract; } public String getProvinceID() { return ProvinceID; } public void setProvinceID(String provinceID) { this.ProvinceID = provinceID; } public String getShipVia() { return ShipVia; } public void setShipVia(String shipVia) { this.ShipVia = shipVia; } public String getStatus() { return Status; } public void setStatus(String status) { this.Status = status; } public String getStreet1() { return Street1; } public void setStreet1(String street1) { this.Street1 = street1; } public String getStreet2() { return Street2; } public void setStreet2(String street2) { this.Street2 = street2; } public String getVendorType() { return VendorType; } public void setVendorType(String vendorType) { this.VendorType = vendorType; } public String getZip() { return Zip; } public void setZip(String zip) { this.Zip = zip; } @Override public boolean equals(Object o) { if (!(o instanceof Vendor)) { return false; } Vendor rhs = (Vendor) o; return new EqualsBuilder() .append(StringUtils.trim(this.getVendorID()), StringUtils.trim(rhs.getVendorID())).isEquals(); } @Override @Transient [color=red]@IgnoreProperty[/color] public String getId() { return this.getVendorID(); } public void setId(String vendorID) { this.setVendorID(vendorID); } @Override public int hashCode() { return new HashCodeBuilder(732005277, -727069309).append( this.getVendorID()).hashCode(); } @Override public String toString() { return new ToStringBuilder(this).append("VendorID", this.getVendorID()) .toString(); } }
其中@IgnoreProperty annotation是Aegis databinding的一部分。相当于告诉该字段是只读的。
创建 service interface
import java.util.List; import javax.jws.WebService; import javax.jws.WebParam; @WebService public interface VendorMaintenance { public Vendor get(String vendorID); public void add(@WebParam(name = "vendor") Vendor vendor); public List<Vendor> getList(); }
@WebService 和@WebParam是JAX-WS annotations。如果你想完整的标注就看文档去。
创建实现类
import java.util.List; import javax.jws.WebService; @WebService(endpointInterface = "webservice.VendorMaintenance") public class VendorMaintenanceImpl implements VendorMaintenance { private DAO<Vendor> vendorDao; public void setVendorDao(DAO<Vendor> vendorDao) { this.vendorDao = vendorDao; } public void add(Vendor vendor) { try { this.vendorDao.save(vendor); } catch (Exception e) { throw new BusinessException(e.getMessage()); } } public Vendor get(String vendorID) { return this.vendorDao.get(vendorID); } public List<Vendor> getList() { // TODO Auto-generated method stub return this.vendorDao.getList(); }
我用的是Hibernate,反正就是给一个结果。
@WebService 再次标注这是一个Web Service
创建配置文件
<?xml version="1.0" encoding="UTF-8"?> <!-- START SNIPPET: beans --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core" 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"> <!-- Load CXF modules from cxf.jar --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- Enable message logging using the CXF logging feature <cxf:bus> <cxf:features> <cxf:logging></cxf:logging> </cxf:features> </cxf:bus>--> <!-- The service bean --> <bean id="VendorMaintenanceImpl" class="com.mms.webservice.VendorMaintenanceImpl"> <property name="vendorDao"> <ref bean="otherVendorDao" /> </property> </bean> <!-- Aegis data binding --> <bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" scope="prototype" /> <bean id="jaxws-and-aegis-service-factory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean" scope="prototype"> <property name="dataBinding" ref="aegisBean" /> <property name="serviceConfigurations"> <list> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration" /> <bean class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration" /> <bean class="org.apache.cxf.service.factory.DefaultServiceConfiguration" /> </list> </property> </bean> <!-- Service endpoint --> <!-- See http://incubator.apache.org/cxf/faq.html regarding CXF + Spring AOP --> <jaxws:endpoint id="vendorMaintenance" implementorClass="com.mms.webservice.VendorMaintenanceImpl" implementor="#VendorMaintenanceImpl" address="/VendorMaintenance"> <jaxws:serviceFactory> <ref bean="jaxws-and-aegis-service-factory" /> </jaxws:serviceFactory> </jaxws:endpoint> <jaxws:endpoint id="helloWorld" implementor="com.mms.webservice.HelloWorldImpl" address="/HelloWorld" /> </beans> <!-- END SNIPPET: beans -->
注意Aegis data binding部分就是数据绑定了。我采用的是默认绑定。还可以自己定义绑定。这里有一个问题。加了CXF:BUS但始终报错,以后解决了。然后发布,写出客户端就可以了。
发表评论
-
[Quartz]Spring3.0不支持Quartz2.0
2011-09-13 08:28 4577将quartz从1.7升级到2.01 发现Caused by ... -
spring读书笔记----Quartz Trigger JobStore出错解决
2010-10-20 06:22 10966将Quartz的JOBDetail,Trigger保持到数据库 ... -
spring读书笔记----<context:component-scan/>和<context:annotation-config/>
2010-10-19 03:05 4237<context:annotation-config/& ... -
Spring读书笔记------RedirectView不传递session
2010-01-19 08:44 2042程序中反复才发现原来spring中RedirectView不传 ... -
Spring读书笔记-------使用activeMq
2010-01-15 07:11 1601在spring中使用activeMq 版本:spring 2 ... -
Spring总结-----properties文件load
2009-10-29 05:59 5445Spring中property用来存放application的 ... -
Spring----Quartz总结
2009-10-23 02:50 3692Quartz的关键元素结构图: ... -
Spring总结-----@Component,@Service,@Controller,@Repository
2009-10-20 05:24 13704在一个稍大的项目中, ... -
Spring JsonView--对输出对象属性的过滤
2008-12-20 08:09 3836由于Spring中的对象可以获取子对象,但json输出的时候会 ... -
Spring Security Acl- MethodSecurityInterceptor冲突解决
2008-12-09 08:01 4243在Spring Security Acl中使用methodSe ... -
Spring Security Acl- Mysql数据脚本带sample
2008-11-26 08:04 2109SET SQL_MODE="NO_AUTO_VALU ... -
getSession与getHibernateTemplate的区别
2008-11-18 03:55 6148一直都很疑惑在spring框架中getSession与getH ... -
Appfuse2学习笔记--full-source时proxy错误处理
2008-11-06 07:03 1479公司有proxy但在mvn和svn都设置好了平时使用一直没有觉 ... -
Appfuse2学习笔记--GzipFilter的应用
2008-10-07 06:49 3172AppFuse中经过分析使用了大量的开源框架和组件。个人认为整 ... -
CXF学习笔记---给CXF加一把锁WS_SECURITY应用
2008-10-02 05:33 17254CXF的webService已经创建好,但没有安全可言,毕竟这 ... -
CXF客户端调用
2008-10-01 07:36 6322上一篇我用acgei绑定的方式创建了一个Web Service ... -
Spring的command属性的绑定
2008-09-27 01:33 2332开发当中发现extjs的checkbox的value是on o ... -
MultiAction的灵活应用
2008-09-04 00:56 1411按照参数设置和按照method混合配置 <?xml ...
相关推荐
Apache CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务。结合Spring框架,可以轻松地在Java应用程序中实现Web服务。本教程将深入探讨如何利用Apache CXF 2与Spring 2.5来构建和使用WebService。 ...
Apache CXF是一个开源服务框架,它允许开发人员创建和消费Web服务,而Spring框架则是一个广泛使用的Java企业级应用的IOC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。将两者结合,可以方便地...
当我们将CXF与Spring结合使用时,可以利用Spring的管理能力,简化CXF的配置和部署,提升应用的可维护性和可扩展性。 在“CXF与Spring 2.5整合”中,主要涉及到以下几个知识点: 1. **Spring的依赖注入**:Spring的...
XFire 1.2.6是Apache CXF的前身,它提供了一个快速、轻量级的方式来创建和消费SOAP Web服务。XFire支持多种协议,如HTTP、JMS,并且可以无缝地与Spring框架集成,利用Spring的依赖注入特性,使Web服务的实现更加简单...
在本文中,我们将深入探讨如何使用Apache CXF 2与Spring 2.5框架来开发Web服务实例。Apache CXF是一个流行的开源项目,它提供了一种简单且强大的方式来实现和消费SOAP和RESTful Web服务。Spring框架则以其模块化、...
总结来说,"spring2.5+xfire1.2.6 客户端和服务端的配置"涉及到的是一项历史性的Web服务集成技术,利用Spring的灵活性和Xfire的功能来创建和消费SOAP服务。随着技术的发展,现在的Web服务集成通常会使用更新的框架如...
3. **示例**:通常会有示例代码和项目,演示如何使用CXF创建和消费Web服务。 4. **配置文件**:如cxf.xml,用于配置CXF的行为和设置。 要开始使用Apache CXF 2.0.10,开发者需要解压此压缩包,将库文件添加到项目中...
webserviceApache CXF java springboot利用Apache CXF创建webserice接口 Apache CXF 核心架构是以BUS为核心,整合其他组件。 * Bus是CXF的主干, 为共享资源提供一个可配置的场所,作用类似于Spring的...
在Java开发中,有时我们可能需要整合不同的框架或者库,比如Apache CXF和XFire,这两个都是用于构建Web服务的框架。然而,由于它们都包含了处理XML Schema(XmlSchema)的相关组件,可能会出现jar包冲突的问题,导致...
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
通过这个官方完整jar包,开发者可以获得CXF的核心功能,使用bin目录中的工具进行服务部署,查阅api文档学习和理解框架,借助simple示例快速上手,并且能与Spring 3.2.0框架紧密结合,实现高效的服务开发和管理。
Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)中的Web服务。这个"apache cxf_jar包"包含了实现基于Java的Web服务所需的一系列核心库。下面我们将深入探讨这些jar文件及其在Web服务实现...
总之,Apache CXF是一个强大的Web服务框架,提供了全面的工具和API,使得开发人员能够轻松创建和维护复杂的Web服务。通过深入理解和实践"apache-cxf-3.5.0.zip"中的内容,开发者可以更好地利用CXF构建高效、健壮的...
Apache CXF是一个开源的服务框架,它允许开发人员创建和消费Web服务。Spring框架则是一个广泛使用的Java企业级应用开发框架,提供了丰富的功能,包括依赖注入、面向切面编程以及容器管理。REST(Representational ...
1. **环境准备**:确保使用合适的开发环境,例如Eclipse 3.5,安装JDK 1.6,并获取Apache CXF 2.6.3和Spring 3.0的相关库文件。 2. **创建Web服务**:首先,创建一个新的Web项目,然后将CXF库的lib文件夹内容添加到...
这个项目的核心目标是提供一个工具集,使开发者能够轻松地创建和部署基于SOAP和RESTful的服务。CXF这个名字来源于两个曾经流行的开源项目:XFire和Celtix,它们在2006年合并成为了现在的Apache CXF。 Apache CXF ...
2. **JAX-WS和JAX-RS**:Apache CXF支持这两种Java API,用于创建和消费Web服务。 3. **WSDL(Web服务描述语言)**:如何使用WSDL定义服务接口,并通过CXF生成服务实现。 4. **数据绑定**:了解XML到Java对象的映射...
1. **SOAP支持**:Apache CXF允许开发者创建和消费SOAP 1.1和1.2服务。它支持WSDL(Web服务描述语言)的第一类公民,可以从WSDL生成服务客户端和服务实现,或者从Java类生成WSDL。 2. **RESTful服务**:CXF也支持...
Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个"apache-cxf-2.2.10"版本是该框架的一个历史版本,发布于较早的时期。在本文中,我们将详细介绍如何安装和配置Apache CXF ...