2010-07-08 5 views
0

특정 포트 에 소켓 연결을 허용하고 해당 소켓을 통해 클라이언트와 통신하는 매우 간단한 서버를 작성했습니다. 이제 J2SE 응용 프로그램에서 완벽하게 작동하는 클라이언트 lib가 있습니다.서블릿 컨테이너의 오픈 소켓 연결

그러나 서버와 통신하기 위해 서블릿 (클라이언트가되는 서블릿)에서 해당 lib를 사용하려고하면 작동하지 않습니다. 불행히도 예외 나 나를 도울 수있는 것이 없습니다. 대신 lib를 사용할 때 아무 일도 일어나지 않습니다. 소켓에 연결되어있는 메서드 호출은 서버에 연결되지 않은 채 무한정으로 차단됩니다 ( ).

일반적인 문제 일 수 있습니다. 그런 것들이 서블릿에서 허용되지 않을 수 있습니까? 하지만 그렇다고하더라도 적어도 일부 예외가 발생할 것으로 예상됩니다.

서블릿 컨테이너는 Tomcat입니다.

왜 이것이 작동하지 않는지에 대한 아이디어가 있습니까?

+0

코드를 게시 할 수 있습니다. –

+0

나는 무기한으로 사용하기 전에 좀 더 인내심을 가질 필요가 있다고 생각합니다. 방금 IOException이 발생했습니다 : Connection reset. 이것이 도움이되는 경우 Dunno. 예 코드를 게시 할 수 있습니다. 나는 곧 그렇게 할 것입니다. (먼저 그것을 잡아야합니다.) – Machisuji

답변

0

여기에 실제 문제가 있습니다.

Windows와 Linux의 동작이 다른 것 같습니다. Tomcat이 Windows 컴퓨터에서 실행되는 동안 나는 Linux에서 server + lib를 개발했습니다.

내가 말했던 서버는 ProcessBuilder를 통해 명령을 실행합니다. 실제로 무기한 차단 된 것은 프로세스 # waitFor입니다.

Windows 기반입니다. 리눅스에서는 프로세스가 완료 되 자마자 제대로 작동하고 반환됩니다. Windows에서 Process # waitFor는 어떤 이유로 프로세스의 InputStream을 읽을 때만 반환됩니다.

죄송합니다.