@WebService(wsdlLocation =不如宣传的那样

时间:2014-04-10 14:24:03

标签: java eclipse web-services soap wsdl

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

在不强制?wsdl查询响应父类的WSDL的情况下,它是一个无用的查询,因为它定义了一个客户端的特定服务,该客户端当前可以使用WSDL的本地副本来访问标准化的服务列表个人服务器可能会也可能不会充实。事实上,?wsdl是一个简单的GET查询,它使得它的响应不是更直接可定制的,这让我感到很荒谬,但我仍然坚持这个记录不完整(一行,10个字以下),看似片状的“工具”。

请不要告诉我您实施项目的具体方式。我已经浪费了太多时间在这个相对不重要的“便利”上,而且完全重新设计是完全不可能的。如果您没有答案或有效的简单示例,请提前感谢您不要以这种方式混淆答案。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

好吧,我会尝试指定serviceName和/或targetNamespace来查看是否可以消除这些无根据的假设,但如果这样做不起作用,我就会花费大量时间。

...

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

答案 1 :(得分:0)

哇!在调整name和serviceName之后(如果name是"服务的名称"看起来差别很大,所以我把它们做成了相同),在猜测它会是什么之后添加一个portName并最终使用来自WSDL,AND从WSDL设置targetNameSpace,我实际上得到了一个?wsdl响应,似乎与我试图得到的响应一致,除了间距不同,我没有'请参阅diff选项以将多行组与单行进行比较。唯一可以确定的方法是修改我的一个客户端,看它是否在?wsdl查询URL上窒息!

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

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

我希望这能证明我的漫无边际! (顺便说一句,是的,它最终与我的客户合作!)

相关问题