从远程计算机使用Web服务

时间:2011-10-29 14:13:42

标签: java web-services web-applications wsdl jax-ws

我有一个使用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外部看不到它?

1 个答案:

答案 0 :(得分:2)

看起来难以置信,我找到了最简单的答案......而不是以

的形式发布
Endpoint endpoint = Endpoint.publish("http://PC1:8686/servicios", servicios);

我发表了

Endpoint endpoint = Endpoint.publish("http://0.0.0.0:8686/servicios", servicios);

并解决了它......

另一个解决方案是从一个文件中获取要发布的地址。我不知道为什么它没有硬编码......我最终这样做了:

Properties prop = new Properties();
InputStream is = null;
String currenDir = System.getProperty("user.dir");
String nombreArchivo = currenDir + File.separator + "ubicacion.PROPERTIES";
try {
is=new FileInputStream(nombreArchivo);
prop.load(is);
} catch(IOException ioe) {}

String pc = prop.getProperty("ServiciosWeb");      
Endpoint endpoint = Endpoint.publish( pc, servicios);
}