2009-05-18 5 views
1

다른 Tomcat 서버에서 실행중인 두 개의 서블릿이 있습니다.다른 서블릿에서 서블릿 호출하기

나는 다음과 같은 방법으로 servlet2에서 servlet1 전화를 시도하고 출력 스트림에 객체를 쓰고 싶었다.

URL url=new URL("http://msyserver/abc/servlet1"); 
URLConnection con=url.openConnection(); 
con.setDoOutput(true); 
con.setDoInput(true); 
OutputStream os=con.getOutputStream(); 
ObjectOutputStream oos=new ObjectOutputStream(os); 
oos.writeObject(pushEmailDTO); 
oos.flush(); 
oos.close(); 

문제는 내가 서블릿에 도달 할 수 없다는 것입니다. 나는 내가 무엇을 잃어버린 것인지 알 수 없다.

답변

1

나는 unnderstand 할 수 있지만 코드에 다음 줄을 추가했다. 당신이 데이터를 전송/읽기 전에이 url.connect()를 통해 연결을 만들어야합니다이

URL url=new URL("http://msyserver/abc/servlet1"); 
URLConnection con=url.openConnection(); 
con.setDoOutput(true); 
con.setDoInput(true); 
con.getExpiration();//<---------- 
OutputStream os=con.getOutputStream(); 
ObjectOutputStream oos=new ObjectOutputStream(os); 
oos.writeObject(pushEmailDTO); 
oos.flush(); 
oos.close(); 
+0

,이 도움이 될 수 있습니다 - http://stackoverflow.com/questions/4844535/why-do-you-have-to-call-urlconnectiongetinputstream-to-be-able-to-write-out-to – Gyan

1

오류가 무엇을 얻고 있는가? 주소가 올바른지 확인하십시오. 원격 서버가 80 이외의 포트에서 실행중인 경우 URL을 작성할 때이를 고려하십시오.

또한 내가 대신의 URLConnection의 HttpClient를 사용하는 것이 좋습니다 수 있습니다.

+0

모든 행을 성공적으로 실행하는 데 예외가 발생하지 않습니다. 또한 서블릿은 언급 된 코드를 전달하는 정확한 URL에서 실행 중입니다. 새로운 방문자를위한 –

6

같은

con.getExpiration(); 

.

  1. openConnection()
  2. : URL로 연결을 설정하는 것은 다단계 과정이다, 일반적으로

    : 이름 openConnection() 그것은 이미 않지만 워드 프로세서 말 것을 제안 때문에 이것은 반 직관적이다 원격 자원에 대한 연결에 영향을주는 매개 변수를 조작하십시오. 자원과

  3. 연결()
  4. 인터랙트; 쿼리 헤더 필드 및 내용

getExpiration()가 작동하게하는 이유이다 : 그것은 당신을 위해 connect()를 호출합니다.

관련 문제