从JBOSS EJB服务中调用Web服务的问题

时间:2010-05-11 19:57:14

标签: java jboss jax-ws

我的内部网络上有一个简单的网络服务。我使用SOAPUI做了一些测试,从WSDL生成了服务类,并编写了一些Java代码来访问服务。一切都按预期进行,因为我能够创建服务代理类并进行调用。非常简单的东西。唯一的减速是让java信任来自提供Web服务的机器的证书。这不是技术问题,而是我缺乏基于SSL的Web服务的经验。 现在我的问题。我编写了一个简单的EJB服务并将其部署到JBoss Application Server 4.3中,现在在以前工作的代码中出现以下错误。

12:21:50,235 WARN  [ServiceDelegateImpl] Cannot access wsdlURL: https://WS-Test/TestService/v2/TestService?wsdl

我可以使用错误消息中的URL从与应用程序服务器在同一台计算机上运行的Web浏览器访问wsdl文件。我还可以在与应用程序服务器相同的机器上运行访问应用程序服务器外部的Web服务的代码(不是从内部访问)。我不知道从哪里开始。我打开了JBOSS中的调试日志,除了上面展示的内容之外什么都没有。我在网上做了一些搜索,在一些问题中发现了同样的错误,但那些问题没有答案。使用wsimport ant任务使用JAX-WS 2.2生成的Web服务类,并放置在ejb包中包含的jar中。 JBoss部署在RHEL 5.4中。我在JBOSS community forum上发布了此内容,但在撰写本文时没有回复。

1 个答案:

答案 0 :(得分:1)

看一下ServiceDelegateImpl,它会尝试:

InputStream is = wsdlURL.openStream();

其中wsdlURL是非null URL。这意味着麻烦在于openStream()。我希望问题与https根证书有关;我可以想象JBoss在某处有自己的可接受根证书存储,并且你的根不在那里。

我要做的是测试这个是在HTTP服务器上部署服务,并使wsdlURL成为http URL。如果可行,那就是SSL层。

如果 是SSL层,请尝试手动添加keyStore,方法是在命令行中定义它,就像在this SO question的答案中一样。