【发布时间】:2011-10-29 14:13:42
【问题描述】:
我有一个使用 jdk 6 构建的桌面应用程序,它发布 Web 服务以供 Web 应用程序使用。到目前为止,当两个应用程序都在同一台物理计算机上运行时,我没有任何问题,我可以毫无问题地访问 wsdl,并且 Web 应用程序与桌面应用程序一起工作得很好。问题是我无法从同一网络中的远程计算机访问服务。两台 PC 已连接并可交互。如果我在 PC1 中运行这两个应用程序,我可以从 PC2 使用 webapp 通过
http://PC1:8080
我目前是这样发布的:
public Publicador(){
servicios= new Servicios();
Endpoint endpoint = Endpoint.publish("http://PC1:8686/servicios", servicios);
}
其中 PC1 是电脑的名称。在 PC1 上,我可以从以下地址看到生成的 wsdl,这是我用于 wsimport 命令的那个:
http://PC1:8686/servicios?wsdl
但我不能从 PC2。
任何想法为什么从 PC1 外部看不到它?
【问题讨论】:
-
防火墙?如果您在网络浏览器中从 PC 2 浏览到该 URL,会发生什么情况?
-
两台计算机的防火墙均已关闭。认为这可能是一个问题。奇怪的是我可以访问在 PC1 中运行的 webapp,但不能访问 wsdl 在 pc1 之外运行它。如果我尝试从 pc2 访问 wsdl,我会收到 firefox“无法连接错误”
-
发布 WSDL 的实现是什么?雄猫?
-
wsdl 是从桌面应用程序发布的,wsdl 是通过 apt 命令生成的。为此,我主要有两个类,一个 Publicador(发布者),它是上面代码的 sn-p,它在应用程序启动时运行,并使 wsdl 在本地可用,以及一个服务类,它具有 @WebServices 标志和 @WebMethod在每种方法中。它由使用 tomcat 的 webapp 使用。
-
但是您使用的是哪个 jax-ws 实现?抱歉之前不清楚。如果您有一个简短但完整的示例来演示该问题,那将有所帮助。
标签: java web-services web-applications wsdl jax-ws