- 浏览: 510967 次
- 性别:
- 来自: 远方
文章分类
最新评论
-
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 4544将quartz从1.7升级到2.01 发现Caused by ... -
spring读书笔记----Quartz Trigger JobStore出错解决
2010-10-20 06:22 10843将Quartz的JOBDetail,Trigger保持到数据库 ... -
spring读书笔记----<context:component-scan/>和<context:annotation-config/>
2010-10-19 03:05 4198<context:annotation-config/& ... -
Spring读书笔记------RedirectView不传递session
2010-01-19 08:44 2017程序中反复才发现原来spring中RedirectView不传 ... -
Spring读书笔记-------使用activeMq
2010-01-15 07:11 1576在spring中使用activeMq 版本:spring 2 ... -
Spring总结-----properties文件load
2009-10-29 05:59 5402Spring中property用来存放application的 ... -
Spring----Quartz总结
2009-10-23 02:50 3658Quartz的关键元素结构图: ... -
Spring总结-----@Component,@Service,@Controller,@Repository
2009-10-20 05:24 13675在一个稍大的项目中, ... -
Spring JsonView--对输出对象属性的过滤
2008-12-20 08:09 3800由于Spring中的对象可以获取子对象,但json输出的时候会 ... -
Spring Security Acl- MethodSecurityInterceptor冲突解决
2008-12-09 08:01 4197在Spring Security Acl中使用methodSe ... -
Spring Security Acl- Mysql数据脚本带sample
2008-11-26 08:04 2079SET SQL_MODE="NO_AUTO_VALU ... -
getSession与getHibernateTemplate的区别
2008-11-18 03:55 6111一直都很疑惑在spring框架中getSession与getH ... -
Appfuse2学习笔记--full-source时proxy错误处理
2008-11-06 07:03 1462公司有proxy但在mvn和svn都设置好了平时使用一直没有觉 ... -
Appfuse2学习笔记--GzipFilter的应用
2008-10-07 06:49 3142AppFuse中经过分析使用了大量的开源框架和组件。个人认为整 ... -
CXF学习笔记---给CXF加一把锁WS_SECURITY应用
2008-10-02 05:33 17219CXF的webService已经创建好,但没有安全可言,毕竟这 ... -
CXF客户端调用
2008-10-01 07:36 6292上一篇我用acgei绑定的方式创建了一个Web Service ... -
Spring的command属性的绑定
2008-09-27 01:33 2304开发当中发现extjs的checkbox的value是on o ... -
MultiAction的灵活应用
2008-09-04 00:56 1376按照参数设置和按照method混合配置 <?xml ...
相关推荐
NULL 博文链接:https://chilongxph.iteye.com/blog/510707
CXF2.5.0+Spring2.5 集成DEMO
CXF2+Spring2.5开发WebService实例,需要导入jar包
webserviceApache CXF java springboot利用Apache CXF创建webserice接口 Apache CXF 核心架构是以BUS为核心,整合其他组件。 * Bus是CXF的主干, 为共享资源提供一个可配置的场所,作用类似于Spring的...
NULL 博文链接:https://wenrunchang123.iteye.com/blog/1313941
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、...
Apache cxf 与spring集成
Apache CXF 框架是一个比较有前途的开源 Web Services 框架,也是构建 SOA 架构应用的利器。本书采用案例源码和解说形式全面...最后,本书还描述了 Apache CXF 的工具、配置、调试、日志、部署和发布等使用的相关内容。
为了解决wsdl解析 生成对应的Java类对象 本网址可以直接点击下载
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
apache CXF 2.0.9源代码....
演示使用 Spring Boot 和 Apache CXF 以零 XML 配置托管 JAX-WS 服务的能力。 运行服务 在终端中,执行: ./gradlew bootRun 或者,可以通过将demo.spring.service.Application.java作为普通 Java 应用程序运行,...
Apache CXF Apache CXF Apache CXF Apache CXF Apache CXF Apache CXF Apache CXF Apache CXF Apache CXF
Apache CXF是一个开放源码的Web服务框架,提供了一个易于使用,用于开发Web Services标准为基础的编程模型。本书主要介绍Apache CXF在构建SOA架构各个方面的应用说明和编程案例。覆盖以下内容:基于JAX-WS规范和CXF...
Apache CXF配置REST服务,集成到Spring当中。
apache cxf 2.1.3 的用户手册
本实例是一个简单的Spring+Apache CXF+MyBatis+Maven的集成小项目,可以最为学习参考,程序说明在我的博客里面有,链接地址:http://blog.csdn.net/liuxing9345/article/details/77983755
Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。