我有一个使用jdk 6构建的桌面应用程序,该应用程序发布Web应用程序要使用的Web服务。到目前为止,当两个应用程序在同一台物理计算机上运行时,我没有遇到任何问题,我可以毫无问题地访问wsdl,并且Web应用程序可以正常使用桌面应用程序。问题是我无法从同一网络中的远程计算机访问服务。这两台PC已连接并可以进行交互。如果我在PC1中运行这两个应用程序,从PC2我可以通过
使用webapphttp://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外部看不到它?
答案 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);
}