@WebService(wsdlLocation = not as advertised



我看到了很多关于这个错误的帖子com.sun.xml.internal.ws.server.ServerRtException:[未能本地化]cannot.load.wsdl但这些响应似乎都是处理变通方法,例如使用WEB-INF,而不是解释为什么WebService注释的文档在简单地声明URL字符串是相对或绝对路径时是不准确的。即使是从C:驱动器根开始的不可移植文件:///结构也不起作用,更不用说与我的类路径相关的东西了。

没有强迫?wsdl查询用父类的wsdl响应,这是一个无用的查询,因为它为客户端定义了一个特定的服务,该客户端当前可以使用wsdl的本地副本来访问单个服务器可能充实也可能不充实的标准化服务列表。事实上?wsdl是一个简单的GET查询,它的响应不能更直接地自定义,这让人觉得很可笑,但我一直使用这个文档不足(一行,不到10个字)、看起来很古怪的"工具"

请不要对我说教你实施项目的特殊方式。我已经在这个相对不重要的"便利性"上浪费了太多时间,完全不可能重新设计。如果你没有一个答案或一个简单的例子,请提前感谢你没有以这种方式打乱回复。

我使用的是Eclipse Indigo SR2 Build id:20120216-1857;eclipse默认工作区JRE系统库;以及一个我可以在必要时包括的jar列表,但目前唯一一个似乎具有外围相关性的jar是javax.persistence_2.0.4.20111211009.jar。我也在使用@BindingType(value="http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/")因为客户端似乎能够从WSDL推断出什么,所以服务器似乎对此一无所知,尽管它也使用了从同一WSDL生成的代码!

顺便说一句,为了防止它在Eclipse控制台环境中出现问题,我重新构建了jar,并将其复制到一个新路径的最低配置子目录中以隔离它,以及另一个包含WSDL文件的类路径,然后出现了同样的错误。

好吧,在研究了组成端点实现的部分不推荐使用的代码的GrepCode列表后,我发现我的类路径资源可能没有通过,所以我将"this"参数转换为与child相关的类型,无论出于什么必要的原因,我得到了一个新错误,一个CATCH-22!它告诉我,父WSDL中列出的服务不包括以子WSDL命名的服务。他们为什么要这样做?!

javax.xml.ws.WebServiceException:WSDL。。。具有以下服务。。。但不是。。。也许您忘记在@WebService/@WebServiceProvider中指定serviceName和/或targetNamespace了?

好吧,我会尝试指定serviceName和/或targetNamespace,看看这是否消除了这些不必要的假设,但如果这不起作用,我就白白浪费了很多时间。

显然,Endpoint.publish()的各种形式不包括指定一个不会做出这些不必要和毫无根据的假设的QName。或者wsdlLocation是供内部使用的,而不是用于发布的!

哇!在调整了name和serviceName(如果name是"服务的名称",它们似乎很难区分,所以我让它们相同),在猜测它会是什么之后添加了一个portName,最后使用了WSDL中的那个,并从WSDL中设置了targetNameSpace,我实际上得到了一个?wsdl响应似乎与我一直试图获得的响应一致,只是间距不同,而且我没有看到将多行组与单行进行比较的diff选项。唯一可以确定的方法是修改我的一个客户,看看它是否会阻塞?wsdl查询URL!

最后,为了确保这个有点意识流的帖子是在其他人徒劳地寻找与类似问题相关的东西时出现的,以防我忽略了原始错误,这里是:

com.sun.xml.internal.ws.server.ServerRtException:[未能本地化]cannot.load.wsdl

我希望这能证明我的胡言乱语是合理的!(顺便说一句,是的,它终于适用于我的客户了!)

最新更新