2011-10-22 2 views
0

저는 Java 애플릿이 소켓을 사용하여 포트를 통해 (java로 작성된) 사용자 정의 서버와 통신하는 약 8 년 된 시스템을 가지고 있습니다. 언제든지 십여 명 이상의 사용자가 없습니다. 점점 더 많은 사용자들이 통제 할 수없는 방화벽 뒤에 있습니다. 제안 된 솔루션은 포트 80을 통해 객체를 보내는 방법을 찾는 것입니다.RMI 또는 서블릿은 방화벽을 통해 애플릿과 객체를주고받습니다.

서블릿쪽으로 기울이고 있습니다. 가장 큰 단점은 모든 것을 함께 모으는 법 (아파치, 바람둥이, 서블릿)을 배우는 시간입니다.

그러나 RMI는 (더 쉽게는) 보이는 것처럼 보이지만 방화벽에 대한 오라클의 FAQ를 읽으면 항상 그렇지 않을 수도 있습니다. 더욱이, 나는 그들이 포트를 공유 할 때 아파치와 어떻게 작동하는지 좋은 가이드를 보지 못했다.

(1) 클라이언트에 Java 애플릿을 사용해야하며 (2) 클라이언트의 방화벽을 제어 할 수 없다는 것, (3) 나는 아마추어 프로그래머이지만 전문가가 아니며 자금이 없다는 제약 조건이 주어집니다. 직업을 선택하십시오. 갈 경로가 더 좋으며 다른 해결책을 찾지 못했습니까?

+0

"방화벽에 관한 오라클의 FAQ"라고 말하면 어떤 문서에 대해 이야기하고 있습니까? –

+0

[download.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewall](http://download.oracle.com/javase/1.4.2/docs/guide/rmi/)를 참조하십시오. faq.html # firewall) – RPW

답변

2

이 모든 것이 현재 RMI에서 작동하므로, 나는 tunnelling RMI over HTTP쪽으로 기울어졌습니다. 필자는 한번도 해 본 적이 없지만, RMI의 고대 기능 중 하나입니다.

Apache와 포트를 공유하는 것에 대해 이야기합니다. 실제로는이 작업을 수행 할 수 없습니다. 특정 포트에서 수신 할 수있는 프로세스는 하나뿐입니다. 그러나 포트 80에 Apache를 설치하고 다른 포트에서 수신 대기 할 수있는 요청을 RMI로 전달하도록 구성 할 수 있습니다. RMI-over-HTTP 메소드의 내장으로 구워지기 때문에 (정확하게 이것을 읽고 있다면!) /cgi-bin/java-rmi.cgi 경로가 있기 때문에이 작업을 수행 할 수 있습니다. Apache의 유명한 mod_rewrite을 사용하여 해당 경로에 대한 요청을 잡아서 해당 포트의 Java 프로세스로 전달할 수 있습니다. RMI 프로세스를 완전히 다른 호스트에 배치하고 네트워크를 통해 요청을 전달할 수도 있습니다.

관련 문제