2011-10-29 27 views
1

我有一個使用jdk 6構建的桌面應用程序,該應用程序發佈Web服務以供Web應用程序使用。到目前爲止,當兩個應用程序在同一臺物理計算機上運行時,我沒有任何問題,我可以毫無問題地訪問wsdl,並且Web應用程序可以與桌面應用程序一起工作。問題是我無法訪問來自同一網絡中的遠程計算機的服務。兩臺PC連接並可以互動。如果我在PC1運行兩個應用程序,從PC2我可以通過從遠程計算機消費Web服務

http://PC1:8080 

使用web應用程序我目前發佈這樣的:

public Publicador(){ 
servicios= new Servicios(); 
Endpoint endpoint = Endpoint.publish("http://PC1:8686/servicios", servicios); 
} 

其中PC1是PC的名稱。從PC1,我可以看到從以下地址生成WSDL,這是我用於wsimport的命令之一:

http://PC1:8686/servicios?wsdl 

但我從PC2 cannnot。

任何想法爲什麼它從外部PC1不可見?

+0

防火牆?如果您在網絡瀏覽器中從PC 2瀏覽到該URL,會發生什麼情況? –

+0

兩臺計算機的防火牆都已關閉。認爲這可能是一個問題。奇怪的是我可以訪問在PC1中運行的webapp,但不能在wsdl之外在pc1之外運行它。如果我嘗試從pc2訪問wsdl,我會得到firefox「不能收到錯誤」 – santiagollo

+0

發佈WSDL的實現是什麼? Tomcat的? –

回答

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); 
}