- 浏览: 252215 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
liuweihug:
这个博客不错。都是干货。Jquery+asp.net 后台数据 ...
jquery ajax 中文乱码 -
龙晓舟:
博主真不错!请问,德比的酒店系统有单体店的吗?支持多语言吗?那 ...
我的作品 -
勒布朗-小明:
抽象工厂模式 的例子在哪呢??
Java工厂模式 factory -
llpuya:
hh
Java工厂模式 factory -
phpxiaoxin:
yuhe 写道git init --bare 执行不成功呢?错 ...
git at redhat5
cxf 是 xfire 的替代工具。用来发布webservice。官方网站:http://cxf.apache.org/ 关于使用可以参考:
官方:http://cxf.apache.org/docs/writing-a-service-with-spring.html
或者: 使用CXF实现webservice发 布+spring
或者:XFire的下一代产品CXF的入门(二) - 与Spring的集成
文章里使用了不少注解,其实只需要两个甚至一个就足够了。
需要注意的有以下几点问题:
1.需要引入jar包为:cxf-2.3.1.jar neethi-2.0.4.jar wsdl4j-1.6.2.jar XmlSchema-1.4.7.jar xpp3_min-1.1.4c.jar
可能还会以来其他的,大家根据情况自己引入。
2.写好了接口和实现,以及方法后,只需要加一个@WebService的接口将接口和实现关联我的如下:
@WebService(endpointInterface = "com.phpxiaoxinl.remote.service.HotelReservationService") @BindingType(value = SOAPBinding.SOAP12HTTP_BINDING) public class HotelReservationServiceImpl implements HotelReservationService { @Override public SearchHotelRS searchHotel(SearchHotelRQ searchHotelRequest) { //impl return null; } }
这里用到了@BindingType的注解,将wsdl发布成soap1.2协议(还有soap1.1)。而1.2与1.1的区别可以通过wsdl看出来:其中1.2会有:
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" 或者 xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
而如果去掉这个注解其协议将默认为1.1.
还有一个问题,你会发现我使用的是searchHotelRQ,searchHotelRS ,而不是 searchHotelRequest,searchHotelReponse 原因是我没有加注解,而cxf生成wsdl的时候有命名空间会自动加request或者是reponse,这样方法名和输入输出很可能造成相同的命名空间(因为这个我调试到半夜2点...),所以大家最好不要将输入和输出带上request或者reponse,否则就最好将searchHotel的方法名改成其他的。
3.数据绑定问题。
.net调用时候,vs可以自动生成对象,但是默认会生成一个字段名+Specified的字段,原因细节参考:
http://it.chinawin.net/softwaredev/article-13328.html
这个问题我不十分清楚其原因,估计是因为数据转换的问题。这个可以通过aegis来解决。具体配置参考如下:
<?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-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <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" /> <!-- 发布服务 --> <bean id="hotelB2CReservationService" class="com.phpxiaoxin.service.HotelReservationServiceImpl"> <property name="bookingHotelService" ref="bookingHotelService"/> </bean> <jaxws:endpoint id="hotelReservation" implementor="#hotelReservationService" address="/hotelReservation"> <jaxws:serviceFactory> <ref bean='jaxws-and-aegis-service-factory' /> </jaxws:serviceFactory> </jaxws:endpoint> <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"/> </bean> </beans>
也可参考cxf官方的文档:
http://cxf.apache.org/docs/aegis-databinding-20x.html
这样生成的wsdl就会由:
<xs:element minOccurs="0" name="branchId" type="xs:long"></xs:element>
成为:
<xsd:element minOccurs="0" name="branchId" nillable="true" type="xsd:long"></xsd:element>
切换之后我遇到的第一个问题就是:
java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"
查了一下是因为jar包的原因。 解析xml的jar:xercesImpl-2.9.1.jar 要用2.9.1以上的。可以参考:
https://jira.kuali.org/browse/KULRICE-2810
第二个是.net调用的时候报错:
原因是.net调用的时候设置了压缩xml的参数:DecompressionEnabled = true
参考:HttpTransportBindingElement. DecompressionEnabled
就这些吧。
另外我遇到的问题就是,由于我使用了weblogic作为服务器,而.net调用的时候出现如下错误:
Unsupported encoding: "utf-8; action=""" specified.
java.io.UnsupportedEncodingException: Unsupported Encoding utf-8; action=""
at weblogic.servlet.internal.ServletRequestImpl.setCharacterEncoding(ServletRequestImpl.java:428)
错误原因是因为.net使用了soap1.2协议,生成的header为:
Headers: {content-type=[application/soap+xml; charset=utf-8; action=""]
而soap1.1则生成如下的header:
Headers: {content-type=[text/xml; charset=UTF-8], SOAPAction=[""]
weblogic解析的时候出了bug,没有将utf-8后面的内容截掉,导致这个错误。所以可以设置成soap1.1来调用。具体.net的设置可以在文档中查找soap,找到相关的配置,设置到配置文件中,也可以参考下面的地址
参考:http://www.coderanch.com/t/224524/Web-Services/java/SOAPAction-header
如果是cxf来调用其他人提供的webservice,在已经有wsdl的情况下,可以参考这个文章来完成:
http://blogold.chinaunix.net/u2/73798/showart_2002108.html
主要就是通过cxf提供的工具,通过命令行来生成java对象:
wsdl2java -d src -client http://localhost:8080/webservice/hotelB?wsdl
这篇文章也不错:
http://enna.blog.163.com/blog/static/2058701120093242346371/
发表评论
-
关于ThreadLocal
2012-12-31 18:45 1177关于ThreadLocal 文章介绍了ThreadLo ... -
java 关于内存溢出的相关知识
2012-12-27 16:31 1222http://developer.51cto.c ... -
一次webservice的旅行
2012-12-25 16:19 0最近我们有这样一个需求,就是发布一个与别人一模一样的webse ... -
scala 相关内容整理
2012-07-11 21:18 1441首先是scala 的环境搭建 :鉴客 搭建基于 IDEA 的 ... -
Hibernate DetachedCriteria 一对多查询
2011-05-31 10:50 2856DetachedCriteria detachedCrit ... -
spring proxyTargetClass 动态代理
2010-12-13 20:25 3397今天做两个项目的集成,主项目单独跑没问题,子项目单独跑没问题, ... -
spring事务无异常回滚 [spring rollback without exception]
2010-12-13 16:54 2382在使用spring的时候通常我们可以通过抛出异常的方式完成回滚 ... -
都是spring若的祸-spring从使用到原理
2010-06-07 10:46 0spring2.5中文文档 http://arro ... -
从ant到maven -- maven pom例子(初级)
2010-04-20 14:31 7462最近将项目从ant改成了maven,改的过程中,遇到一些问题, ... -
MAVEN2实用指南, maven2权威指南中英
2010-04-06 11:06 2102maven2权威指南中英 :http://xizhenyin. ... -
Java 回调(callback) 内部类(innerclass)
2009-12-22 21:01 1608/** * 动物 */ public class A ... -
Struts2
2009-11-03 17:30 1354struts2 中 OGNL表达式的使用 http ... -
HttpInvoker 远程调用
2009-10-20 19:35 1921HttpInvoker 远程调用实例 http://www. ... -
java 基础概念知识
2009-10-20 14:55 1863java 泛型 http://baike.baidu.com ... -
spring BeanFactory 实现类的getBean方法
2009-10-10 10:59 3131原文:http://blog.163.com/ka ... -
连接池
2009-09-09 22:35 1694转自http://baike.baidu.com/view/1 ... -
java 面试基础
2009-09-08 11:04 1190ArrayList LinkedList 的区 ... -
guice:Guice和Spring框架的区别
2009-09-02 17:55 1479转自:http://www.crazycoder.cn/ :h ... -
第一次java web面试总结
2009-07-31 13:12 4533公司为某大公司济南的 ... -
关于tomcate配置的一些东西
2009-07-13 10:51 1335乱码问题,这里说的是url乱码的解决方式可以通过配置tomca ...
相关推荐
4. **发布Web服务**:在Spring配置完成后,可以通过Spring启动CXF的Bus,使Web服务自动发布到指定的地址。这通常通过`<jaxws:endpoint>`标签的`address`属性完成。 5. **客户端调用**:在Spring环境中,也可以方便...
3. 接下来,我们需要实现Restful API和WebService API接口,使用Spring Boot的Restful API和CXF框架来实现学生信息的增删改查操作。 4. 最后,我们需要测试Restful API和WebService API接口,确保其正常工作。 结论...
将下载的demo(包括serviceserverdemo及serviceclientdemo,bat文件在serviceclientdemo的src下)导入eclipse即可运行使用,编译时可能需要修改jdk版本,如果导入有错,可新建web项目,按所下载demo的结构搭建即可,...
cxf实现soap webservice服务,服务端\客户端均与spring结合使用,多种方式实现,花了三天时间弄懂,还有许多不懂的地方,欢迎大家交流.参考我的博文:http://blog.csdn.net/qq_33764491/article/details/78831010
使用cxf、spring构建的rest风格webservice,其他相关技术springmvc、mybatis、druid等。代码中使用的数据库为sybase,请根据实际环境更改,需修改pom中引用的数据库驱动,依照entity类的属性建对应表,并修改config....
本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...
【Spring+cxf=WebService】是将Spring框架与Apache CXF集成来实现Web服务的一种常见方式。Spring是一个强大的Java企业级应用开发框架,它提供了一种模块化和灵活的方式来组织和管理应用程序的组件。而CXF则是一个...
ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729
WebService小白学习 之 Spring整合CXF,添加拦截器。 博客学习地址:https://blog.csdn.net/qq_37902949/article/details/81262826
这里少了一个类,是根据实体类生成xml的文件下载地址为:http://download.csdn.net/detail/qq_14996421/9495688
5. **服务发布**:使用CXF的工具,如JAX-WS或JAX-RS,可以自动将你的Java类转换为Web服务。你需要在你的服务类上添加适当的注解,如`@WebService`,然后在Spring配置文件中配置服务端点。 6. **部署与测试**:在...
是eclipse导出的war文件,包含了资源。开发环境jdk1.7 tomcat7。 通过了测试,对应的文档:http://blog.csdn.net/biboheart/article/details/9148651, 有文档了,这里就不多说了。
自己在网上找了很多cxf实现rest风格...现在把源码发上来,java代码只有12K,主要是lib里面的全部jar包(spring、cxf等全部的jar包), 文章地址:http://blog.csdn.net/lxn39830435731415926/article/details/39448887
【标题】"mybatis+spring3+mysql整合的webservice的service"涉及到的是将MyBatis、Spring3和MySQL数据库集成在一起,构建一个基于CXF框架的Web服务。这是一个常见的企业级应用架构,用于实现数据持久化、业务逻辑...
使用CXF+spring创建一个web的接口项目源代码,Myeclipse创建,部署到tomcat中即可访问。 与此对应的博客地址为:http://blog.csdn.net/zxnlmj/article/details/28880303
- **基本认证**:通过`@WebService`上的`endpointInterface`属性,结合Spring Security等安全框架实现。 - **消息级安全**:使用WS-Security规范,例如WS-UsernameToken,WS-SecureConversation等。 - **SSL/TLS*...
"java.net.SocketException Connection reset 解决方法" 在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器...
自己总结的一个CXF集成Spring的例子,可以直接运行,附源码! 程序的详细说明请参照博客文档 http://blog.csdn.net/sunbaojin5213344/article/details/8931600
7. **IFIRE**:IFIRE是CXF的一个子项目,专注于提供基于.NET的Web服务客户端支持,使得Java应用可以方便地调用.NET平台上的Web服务。 在使用CXF 2.4.10资源包时,你需要按照以下步骤操作: 1. **下载和解压**:...