我或多或少是网络服务的初学者,但我尝试使用谷歌搜索没有结果。
我有一个使用Metro堆栈编写的Web服务,当我在本地JBoss 5.1.0实例上运行它时运行正常但是当我将它移动到我们的测试服务器时,我开始遇到问题。
服务正确部署,我可以像往常一样查看WSDL:https://myserver.myorg/path/service?wsdl
但是,wsimport无法从这里生成客户端存根,当我仔细查看WSDL时,我看到了这一点:
<xsd:schema>
<xsd:import namespace="http://mynamespace/" schemaLocation="https://testserver.myorg:443/path/Service?null"/>
</xsd:schema>
而不是我在本地运行它时会看到的,其schemaLocation设置为http://localhost:8080/path/Service?xsd=1
当我尝试在网络浏览器中手动输入xsd = 1而不是null时,我收到404错误。
有人知道可能导致这种情况的原因以及如何解决这个问题吗?
谢谢, 拉吉。
答案 0 :(得分:0)
我认为问题在于您的XSD支持SSL连接,因此您的wsimport需要知道并信任服务器SSL证书。
为了实现这一目标,您需要设置一个新的Java密钥库文件(.jks
文件),或者如果您已经拥有它,则重用现有的文件,添加服务器SSL证书(为此,您可以使用JDK提供的keytool,并使用wsimport调用中的下一个JVM参数将Keystore声明为Trustore:
-Djavax.net.ssl.trustStore=${truststore.location} -Djavax.net.ssl.trustStorePassword=${ssl.password}
答案 1 :(得分:0)
每周重新启动测试JBoss服务器,重启后,XSD文件正常显示。对不起噪音 - 我应该学会在发布之前将其关闭再打开:)。