cxf spring 发布 webservice 供 .net使用

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/

CXF 客户端超时时间设置(非Spring配置方式) 最近一直在找CXF客户端超时时间设置的例子,但是网上搜出来的都是通过Spring配置。找了很久,也琢磨了很久。终于可以不用Spring配置来实现客户端超时时间的设置了。 例子:我这个是java 调用Asp.net的Webservice例子        import org.apache.cxf.endpoint.Client; import org.apache.cxf.frontend.C 阅读详情

相关推荐

apache cxf-2.4.3 +spring-3.0.5发布SOAP协议WebService服务

1.apache cxf-2.4.3导入相关架包: commons-net-3.3.jar cxf-2.4.3.jar geronimo-jaxws_2.2_spec-1.1.jar geronimo-servlet_3.0_spec-1.0.jar jaxb-api-2.2.6.jar jaxb-impl-2.2.6.jar neethi-3.0.1.jar

asuyunlong的专栏 1193

Webservice实践(五)基于CXF的服务端开发

Apache CXF 是一个开放源代码框架;目前java主流的webService应用以CXF、AXIS2为主,CXF比AXIS2效率更高,并且在java 应用中CXF很成熟,因此CXF在webservice中占有非常重要的地位。 本节将使用CXF 来发布服务端和客户端。 下节将介绍CXF 与spring 结合

csolo的博客 2836

广工计组f4b 8位12指令微程序CPU设计实验报告(内含可通过代码以及波形图)

实验目的:模型机是计算机的缩细模型,通过它可以理解计算机整机的结构和功能,理解CPU,存储器,中断控制器,接口的结构及实现逻辑和各部件之前的接口关系。本实验是设计一个8位模型计算机。:一条机器指令可以分解成一个微操作序列,这些微操作是计算机最基本的,不可再细分的操作。:在微程序控制的计算机中。将控制部件向执行部件发出的各种控制命令成为微命令,它是构成控制序列的最小单位。微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作微命令的执行过程。2.:微指令是若干微命令的集合。

weixin_63692154的博客 4705

(五)CXF整合Spring发布RESTful风格的Web服务

1.项目所需JAR包,我是用Maven管理项目的,直接贴出依赖 org.apache.cxf cxf-rt-frontend-jaxrs 2.7.11 org.springframework spring-web 3.1.2.RELEASE org.codehaus.jackson jackson-jax

海为龙世界,云是鹤家乡 1256

网络攻防技术——MD5碰撞试验

一、题目 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制编辑器查看输出的两个文件,描述你观察到的情况; b)参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。 c)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件。 d)回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行文件具有相同的M

学习记录 3621

从零到一:手把手教你用STM32和WiFi打造智能温室大棚的物联网核心

本文详细介绍了如何利用STM32单片机和WiFi技术从零构建智能温室大棚的物联网核心系统。内容涵盖硬件选型、传感器集成、低功耗WiFi通信、自动控制逻辑及OLED显示,提供实际部署中的优化技巧和故障排查方案,帮助开发者打造稳定可靠的农业自动化解决方案。

c7d8e的博客 179

.net framework(<4.8.1)引入Apache CXF WebService的过程

.net framework(

SamSha1971的博客 417

泛微OA表单开发实战:如何用JavaScript动态控制明细表的必填与可编辑属性

本文详细介绍了如何在泛微OA系统中使用JavaScript动态控制明细表字段的必填与可编辑属性。通过主表字段变更事件监听和明细表字段属性批量修改,实现智能化的表单交互,提升用户体验和系统灵活性。文章深入解析了关键API的使用方法,并提供了实战代码示例和最佳实践。

weixin_30955617的博客 549

从零到监控:给你的Docker版Kafka 3.x装个‘仪表盘’(Kafka-Manager实战配置)

本文详细介绍了如何为Docker版Kafka 3.x配置Kafka-Manager可视化监控工具,通过Docker Compose实现一键部署,提升Kafka集群的管理效率。文章涵盖从环境准备、核心功能解读到高级安全配置的全流程,帮助开发者快速搭建专业的Kafka监控仪表盘。

weixin_30851867的博客 478

Unreal Engine Profiler:动画系统性能分析教程_2024-07-23_03-05-38.Tex

Unreal Engine Profiler 是一个内置的性能分析工具,它可以帮助开发者识别和解决游戏中的性能瓶颈。Profiler 提供了详细的性能数据,包括 CPU 使用率、GPU 负载、内存使用情况等,特别针对动画系统,可以查看动画蓝图的执行时间、骨骼动画的计算成本、以及动画混合和重定向的效率。通过这些数据,开发者可以定位到具体的问题,比如哪些动画状态消耗了过多的 CPU 时间,或者哪些动画资源导致了内存泄漏。

825

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 325

WebService之CXF使用

Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP、POST/HTTP、HTTP ,CXF 大大简化了WebService并且可以天然地和 Spring 进行无缝集成。

qq_35338042的博客 4469

【AI大模型】角色设定:给模型定身份的高效使用方法

摘要: AI大模型角色设定(RolePrompting)是提示词工程的核心优化技巧,通过赋予模型特定职业、领域和风格约束,显著提升输出专业度与适配性。文章系统拆解了角色设定的原理、万能公式(领域+身份+技能+风格+场景)、三级分层写法(基础/进阶/专家),并提供10类高频场景的模板。通过无角色与有角色输出的对比实验(Python代码量化验证),证明角色设定可使模型综合得分提升35%以上,尤其优化场景适配度与风格统一性。该技巧作为高阶提示词(如CoT、Few-Shot)的前置模块,能以零成本实现AI输出的专业

unber的博客 43

利用cxf开发WebService

现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作。下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 在WebService开发笔记 2 -- VS 2005 访问WebServcie更简单中作一个跨平台访问WebServcie服务的例子.... 在WebService开发笔记 3 -- 增强访问 Web

Chinook的专栏 1236

Vue Vben Admin 登录页修改全攻略:从登录界面定制到接口对接全流程配置

方式一:修改国际化文件找到对应的语言包文件,修改和的值。方式二:直接传递文本page-description="现代化的后台管理系统模板"page-title="欢迎使用 Vue Vben Admin"从上面的代码可以看出,登录表单使用了的方式来定义表单字段,这种方式提供了极大的灵活性。如果你想要自定义表单,可以修改formSchema数组。如果你的登录需求非常特殊,现有的组件无法满足,你可以完全自定义表单。只需在login.vue中替换<template><h2>自定义登录</h2>

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 479

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

CXF开发webservice需要的最少jar包以及CXF 和 Spring集成所需jar包

文章来源:http://blog.sina.com.cn/s/blog_ae48aad60101ck4e.html 最近用CXF开发webservice,发现老是报jar包的错误,但是又不能把所有从官网下载下来的都复制过来。官网下载的有好几十个呢,这是官网CXF的下载地址:http://cxf.apache.org/download.html。于是网上整理了一下,做个备忘,最少需要的jar包如下c

bujibo的博客 2108

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

CXF在项目中的真实运用--WS访问客户端编写[java、.net]

一、首先,CXF的WS实现类由于实现了和Spring的无缝集成,因此可以采用Spring的单元测试来测试基本功能。 代码如下: package com.defshare.sy.test.biz; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import

jiangtongcn的专栏 2686

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

采用CXF 构建webservice

一般接口开发都会使用如 webservice,ftp ,sftp 的方式实现,如java 程序访问.net 程序,就不的不涉及到soa 开发步骤: 1.下载cxf 相关jar 包 2.在spring context配置文件中引入以下cxf配置 3.在web.xml中添加过滤器: CXFServlet org.apache.cxf.

oypj2010的专栏 906

.net webservice怎么接收post过来的json_WebService快速入门

WebService简介Web Service也叫XML Web Service, WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。WebService是一种跨编程语言和跨操作系统平台的远程调用技术。还可以从多个角度来理解WebSe...

weixin_39772849的博客 1706

WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

    现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作。下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 在WebService开发笔记 2 -- VS 2005 访问WebServcie更简单中作一个跨平台访问W...

天涯书塾 165

Spring-boot整合Webservice服务端

Spring Boot搭建WebService服务端

weixin_55797790的博客 1508

WebService 框架(一)

本文系统梳理了主流WebService框架技术生态。Java领域推荐CXF(SOAP/REST)、Jersey(REST)等;.NET推荐WCF和ASP.NET WebAPI;Python/PHP等语言也有对应框架。SOAP适合企业级复杂场景,REST更适用于微服务架构。特别指出XFire作为历史重要框架已停止维护,建议迁移至CXF。选型应考虑协议需求(SOAP/REST)、语言生态、企业规范等因素,新项目优先选择社区活跃的框架如SpringREST、CXF等,老项目建议逐步向主流框架迁移。

onlymscn的博客 752

CXF+Spring搭建WebService

WebService:   WebService 是一套标准,而不是一种具体的技术。不同的平台,不同的语言,大都提供了对 WebService 的开发实现。 从表面上看,Webservice 就是一个应用程序,它向外界暴露出一个能够通过 Web 进行调用的 API 。也就是说,可以利用编程的方法通过 Web 来调用这个应用程序。对 Webservice 更精确的解释 : Web...

weixin_30887919的博客 163

基于Spring+CXF技术开发WebService

1、服务端 web.xml配置文件:<servlet> <description>CXF处理WebService</description> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servl

huchen0907的专栏 541

实战Web Service with CXF

实战Web Service with CXF   目标 l         理解Web Servcie 的概念 l         理解Web Service 的体系结构和工作原理 l         运用Eclipse 和 CXF发布和使用简单的Web Servcie

sz_bdqn的专栏 3081
上一篇: spring proxyTargetClass 动态代理
下一篇: oracle 启动 命令
xiaoxinphp
博客等级 码龄18年 1粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值