`

客户端服务端同为cxf,报org.apache.cxf.common.i18n.UncheckedException: No operation was fou

阅读更多
异常:
org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://impl.service.ws.mywebapp.com/}validCodeReq.

我看了下wsdl里,有名为 validCodeReq的operation呀,奇了怪了。网上搜了好久也没有解决办法。最后只好attach了 cxf2.0.11的源码进行跟踪,后来发现,cxf会在其内部用一个map来保存QName,而这个map里,有validCodeReq,但是前半部分不对,不是 {http://impl.service.ws.mywebapp.com/},而是 {http://service.ws.mywebapp.com/}。原来是命名空间的问题!返回服务端代码,在服务实现类的注解 @WebService(endpointInterface = "com.mywebapp.ws.service.SomeService")中,加上一个属性 , targetNamespace="http://service.ws.mywebapp.com/",这下,问题就解决了。

总结: 看来这种错误还是对soap协议以及wsdl描述文件的格式不熟导致的。
疑问: 为啥用xfire做客户端,不做上述修改,也能正常调用呢??

分享到:
评论
7 楼 jack_sun 2013-11-29  
PangSir 写道
由于之前用的是Xfire,发现有些不稳定,并且由于业务的不多接入扩大,所以今天考了同时在项目中放入CXF2.6.0,确实有些包冲突,目前调整的话,Xfire服务器端可以和CXF共用新版本的xmlschema.jar,但在客户端Xfire只能用xmlschema.jar的旧版本;

今天下午也发现楼主所描述的问题,不过没从源代码Debug,但是看到了楼主所描述的:
{http://impl.service.ws.mywebapp.com/}
targetNamespace="http://service.ws.mywebapp.com/"
脑子闪过一下:
估计到http://service.ws.mywebapp.com/是接口类所在路径,
而http://impl.service.ws.mywebapp.com/应该是业务类所在位置,
CXF默认取的是接口类所在路径作为命名空间,Xfire确实不加入这个可以正确访问,也是由于命名空间正好是对的;

果然,经过测试:把接口类和业务类放在同一个路径下时,就能测试通过了,回过头去查了一下CXF自带的测试列子,里面也是把接口类和业务类放在同一个路径下(也是为了偷懒);其实按照楼主的做法还是比较科学,能明确定义命名空间所在位置。


@WebService(endpointInterface = "com.mywebapp.ws.service.SomeService")中,加上一个属性 , targetNamespace="http://service.ws.mywebapp.com/"。

加的是接口所在的namespace.如果不是接口所在的namespace,如,targetNamespace="http://abc.com",那operation的namespace还是service.ws.mywebapp.com,不是abc.com。那指定了也没用哇。
6 楼 sundongyadh 2013-04-18  
我是说 多个项目,引用同一个webservice。  就只有改成统一的包层次了吧~
5 楼 sundongyadh 2013-04-18  
如果我是对项目引用 同一个 webService 呢? 命名空间该如何更改呢?
4 楼 lost_alien 2012-04-24  
PangSir 写道
由于之前用的是Xfire,发现有些不稳定,并且由于业务的不多接入扩大,所以今天考了同时在项目中放入CXF2.6.0,确实有些包冲突,目前调整的话,Xfire服务器端可以和CXF共用新版本的xmlschema.jar,但在客户端Xfire只能用xmlschema.jar的旧版本;

今天下午也发现楼主所描述的问题,不过没从源代码Debug,但是看到了楼主所描述的:
{http://impl.service.ws.mywebapp.com/}
targetNamespace="http://service.ws.mywebapp.com/"
脑子闪过一下:
估计到http://service.ws.mywebapp.com/是接口类所在路径,
而http://impl.service.ws.mywebapp.com/应该是业务类所在位置,
CXF默认取的是接口类所在路径作为命名空间,Xfire确实不加入这个可以正确访问,也是由于命名空间正好是对的;

果然,经过测试:把接口类和业务类放在同一个路径下时,就能测试通过了,回过头去查了一下CXF自带的测试列子,里面也是把接口类和业务类放在同一个路径下(也是为了偷懒);其实按照楼主的做法还是比较科学,能明确定义命名空间所在位置。


谢谢!
3 楼 PangSir 2012-04-21  
由于之前用的是Xfire,发现有些不稳定,并且由于业务的不多接入扩大,所以今天考了同时在项目中放入CXF2.6.0,确实有些包冲突,目前调整的话,Xfire服务器端可以和CXF共用新版本的xmlschema.jar,但在客户端Xfire只能用xmlschema.jar的旧版本;

今天下午也发现楼主所描述的问题,不过没从源代码Debug,但是看到了楼主所描述的:
{http://impl.service.ws.mywebapp.com/}
targetNamespace="http://service.ws.mywebapp.com/"
脑子闪过一下:
估计到http://service.ws.mywebapp.com/是接口类所在路径,
而http://impl.service.ws.mywebapp.com/应该是业务类所在位置,
CXF默认取的是接口类所在路径作为命名空间,Xfire确实不加入这个可以正确访问,也是由于命名空间正好是对的;

果然,经过测试:把接口类和业务类放在同一个路径下时,就能测试通过了,回过头去查了一下CXF自带的测试列子,里面也是把接口类和业务类放在同一个路径下(也是为了偷懒);其实按照楼主的做法还是比较科学,能明确定义命名空间所在位置。
2 楼 thirdlife 2011-10-31  
遇到同样的问题,照上边改过咋还不行啊。。。。
用的spring+hibernate
1 楼 Jolence 2011-10-25  
受用了  谢谢

相关推荐

    apache-cxf-2.4.6.zip

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个"apache-cxf-2.4.6.zip"压缩包包含了CXF框架的2.4.6版本,这是一个相对早期的版本,发布于2012年。在深入探讨CXF之前,...

    cxf.apache.org/schemas/(jaxrs.xsd、jaxrs.xsd、core.xsd)文件下载

    xmlns:jaxrs="http://cxf.apache.org/jaxrs" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs ...

    org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar

    org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java(Throws Could not find main class: org.apache.axis.wsdl.WSDL2Java)。 添加本文的jar包压缩包解压出来的所有jar包到当前使用的java.exe 命令的lib目录下的ext...

    apache-cxf-2.0.10.zip下载地址

    4. **配置文件**:如cxf.xml,用于配置CXF的行为和设置。 要开始使用Apache CXF 2.0.10,开发者需要解压此压缩包,将库文件添加到项目中,然后根据自己的需求配置CXF并编写相应的服务或客户端代码。需要注意的是,...

    cxf框架包 apache-cxf-3.4.3.tar.gz

    Apache CXF是一个开源的Java框架,它主要用于构建和开发Web服务。这个框架允许开发者通过SOAP、RESTful HTTP、XML以及各种协议来实现服务接口。在本案例中,我们讨论的是"apache-cxf-3.4.3.tar.gz",这是Apache CXF ...

    apache-cxf-3.5.0.zip

    - 在服务器环境中,可以使用CXF的Servlet或Jetty容器来部署Web服务,通过修改`etc/cxf.xml`等配置文件进行定制。 - 客户端可以使用CXF的动态客户端API或者生成的Java客户端代码来调用服务。 6. **标签解析** ...

    apache-cxf-2.7.7.zip

    Apache CXF是一个开源的Java框架,它主要用于构建和开发Web服务。这个"apache-cxf-2.7.7.zip"压缩包包含了CXF框架的2.7.7版本,这是一个在2013年发布的稳定版本。CXF是Apache软件基金会的项目,它集成了多种Web服务...

    CXF客户端添加soapHeader代码 + jar包 + apache-cxf-3.1.15

    import org.apache.cxf.frontend.ClientProxyFactoryBean; public class ClientConfig { public static YourServiceInterface createClient() { ClientProxyFactoryBean factory = new ClientProxyFactoryBean();...

    apache-cxf-2.7.6.rar

    6. **插件体系**:Apache CXF有一个灵活的插件架构,开发者可以根据需要扩展或替换其组件,如消息格式化器、协议处理器等。 在Apache CXF 2.7.6版本中,可能包含了以下内容: - **源代码**:项目的原始Java源代码...

    apache-cxf-3.3.3.zip

    6. **代码生成**:CXF可以自动生成客户端和服务端代码,只需提供WSDL文件,即可生成相应的Java代码。这对于快速开发和调试非常有帮助。 7. **性能优化**:CXF提供了缓存机制、HTTP连接管理等特性,以提高Web服务的...

    CXF 一个完整的webService(整合客户端和服务端)

    CXF不仅简化了Web服务的开发,而且允许开发者无缝地在客户端和服务端之间切换,从而实现双向通信。 **1. CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)...

    apache cxf_jar包

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)中的Web服务。这个"apache cxf_jar包"包含了实现基于Java的Web服务所需的一系列核心库。下面我们将深入探讨这些jar文件及其在Web服务实现...

    apache-cxf-2.7.5所有jar都在

    6. **代码生成工具**:CXF提供了一套工具,可以从WSDL文件生成Java服务端和客户端代码,简化了开发流程。 7. **测试工具**:CXF的 CXF TestSuite 提供了对Web服务的集成测试支持。 在"apache-cxf-2.7.5"压缩包中,...

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    这个压缩包"apache-cxf-2.7.7以及cxf客户端所需要的jar包"包含了Apache CXF 2.7.7版本及其客户端运行所需的库文件。这些jar包对于创建、部署和消费Web服务至关重要,特别是对于使用命令行生成Web服务客户端的开发者...

    [免费]xercesImpl-2_9_1.jar-CSDN下载

    s.addLocation(StaxUtils.java:1038) at org.apache.cxf.staxutils.StaxUtils.startElement(StaxUtils.java:893) at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:965) at org.apache.cxf....

    cxf-manifest.jar

    webservice CXF 报错:java.lang.NoClassDefFoundError: org/apache/neethi/builders/AssertionBuilder 需要用到此jar文件 通过apache官网可获得。 文件位置\apache-cxf-2.7.13\lib

    apache-cxf3.1.15和3.2.3合集及jdk说明

    Apache CXF是一个开源的服务框架,它允许开发人员构建和部署SOAP和RESTful Web服务。CXF的名字来源于"CXF = Client eXtension Framework + XFire",它整合了两个先前独立的Web服务框架——CXF和XFire。这个合集包含...

    apache-cxf.2.7.6.zip

    10. **国际化和本地化**:CXF支持多语言和地域的Web服务,通过i18n和l10n机制,可以轻松处理不同地区的用户需求。 通过解压"apache-cxf.2.7.6.zip",你会得到一系列的jar文件,这些文件包含了CXF框架的核心组件和...

Global site tag (gtag.js) - Google Analytics