2011-10-29 5 views
1

웹 응용 프로그램에서 사용할 웹 서비스를 게시하는 jdk 6으로 작성된 데스크탑 응용 프로그램이 있습니다. 지금까지 두 응용 프로그램이 동일한 물리적 컴퓨터에서 실행되는 동안 문제가 없었습니다. 문제없이 wsdl에 액세스 할 수 있으며 웹 응용 프로그램은 데스크톱 응용 프로그램과 잘 작동합니다. 것은 동일한 네트워크에있는 원격 컴퓨터에서 서비스에 액세스 할 수 없다는 것입니다. 두 대의 PC가 연결되어 상호 작용할 수 있습니다. 내가 PC1에서 두 응용 프로그램을 실행하는 경우, PC2에서 나는 현재 다음과 같이 게시하고원격 컴퓨터에서 웹 서비스 사용하기

http://PC1:8080 

를 통해 웹 애플리케이션을 사용할 수 있습니다

PC1는 PC의 이름입니다
public Publicador(){ 
servicios= new Servicios(); 
Endpoint endpoint = Endpoint.publish("http://PC1:8686/servicios", servicios); 
} 

. PC1에서, 나는 다음 주소에서 생성 된 WSDL을 볼 수 있습니다, 그리고 그것은 내가 wsimport의 명령에 사용 하나 :

http://PC1:8686/servicios?wsdl 

하지만 PC2에서 할 cannnot.

PC1 외부에서 볼 수없는 이유는 무엇입니까? 이 보일 수 있으므로

+0

방화벽? 웹 브라우저에서 PC 2의 해당 URL을 탐색하면 어떻게됩니까? –

+0

두 컴퓨터의 방화벽이 모두 종료되었습니다. 생각이 문제가 될 수 있습니다. 이상한 일은 PC1에서 실행되는 webapp에 액세스 할 수 있지만 pc1 외부에서 실행하는 wsdl에는 액세스 할 수 없습니다. 내가 pc2에서 wsdl에 액세스하려고하면 파이어 폭스가 "오류를 맞출 수 없습니다"라는 메시지가 나타납니다. – santiagollo

+0

WSDL 게시 구현은 무엇입니까? 수코양이? –

답변

2

인크 레 더블, 나는 ...

내가

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

로 게시하고 그것을 해결

Endpoint endpoint = Endpoint.publish("http://PC1: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); 
} 
관련 문제