下面是情况...
我使用wsimport从.wsdl文件创建生成的.java文件。例如...
"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin ".\wsdl\MyWSDL.wsdl"
我注意到这个硬编码(刚刚输入这个词组时,我几乎要呕吐了)的“wsdlLocation”是当前wsdl位置(“C:\ Users \ ME \ etc \ wsdl \ MyWSDL.wsdl”)。所以我把它拿出来:
"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin -wsdllocation "NULL" ".\wsdl\MyWSDL.wsdl"
现在当我实例化一个生成的服务时...
MyService xyz = new MyService();
我遇到了一个错误,大概是说“找不到文件C:\blahblah\Temp\NULL”。好的...回到起点。经过一番调查,我在Stack Overflow上发现了一篇帖子,讲述了使用“classpath:META-INF/WSDL.wsdl”作为wsdl位置的方法。
"%JAVA_HOME%\bin\wsimport" ... -wsdllocation "classpath:WSDLs/MyWSDL.wsdl" ".\wsdl\MyWSDL.wsdl"
copy ".\wsdl\*" .\bin\WSDLs
cd bin
"%JAVA_HOME%\bin\jar" cf WebServiceProxies.jar *
错误!
"Unknown protocol: classpath"
很奇怪的是,Stack Overflow上的帖子被标记为答案。我猜在过去的两年里,可能已经有相当多的变化,以至于“classpath:”不再受支持,或者有其他方法来解决这个问题,但我还没有能够找到答案。
好的,我有几个问题需要回答(提前感谢!!!我快要疯了!)。
是否有一种方法使其在运行时不需要WSDL?就我所知,当我实例化对象时需要它,我认为它是胡说八道。有什么方法可以抑制这种要求吗?也许如果我使用不同的工具会更好...?
如果此代码在运行时确实需要WSDL,则如何从包中获取它?我应该在wsdllocation参数中放置什么来加载JAR文件中的WSDL?
META-INF\wsdl
中创建一个副本,并将其放入包含项目的最终JAR文件中。(http://netbeans.org/kb/docs/websvc/jax-ws.html) - madth3