두 개의 서블릿 A & B가 있습니다. B에서 i는 A가 상태를 확인하기 위해 호출하는 isAvailable() 메소드를 갖습니다. 이 메소드가 true를 반환하면 객체는 B에 전달 될 것입니다.원격 서블릿 통신
약간의 독서를 할 때 나는 익숙하지 않은 몇 가지 옵션을보고 있습니다. 원격 EJB, RMI 또는 간단한 HTTP를 사용하는 JNDI (마지막 수행 방법은 확실하지 않음)
너희들은 어떻게 생각하니? 다른 옵션은 없습니까?
두 개의 서블릿 A & B가 있습니다. B에서 i는 A가 상태를 확인하기 위해 호출하는 isAvailable() 메소드를 갖습니다. 이 메소드가 true를 반환하면 객체는 B에 전달 될 것입니다.원격 서블릿 통신
약간의 독서를 할 때 나는 익숙하지 않은 몇 가지 옵션을보고 있습니다. 원격 EJB, RMI 또는 간단한 HTTP를 사용하는 JNDI (마지막 수행 방법은 확실하지 않음)
너희들은 어떻게 생각하니? 다른 옵션은 없습니까?
인프라가 이미 HTTP를 사용하고 있다는 사실을 왜 사용하지 않습니까?
그래서 서블릿 A는 상태를 확인하기 위해 특정 경로에서 HTTP GET을 수행 할 수 있습니다 (객체를 보내거나 HTTP 응답 코드를 확인합니다 -이 후자의 방법은 상태 코드의 오용으로 보입니다). PUT/POST 필요에 따라서 오브젝트 여러 호스트에서 실행 중이며 시나리오에서 작동합니다.
개체는 표준 Java를 사용하거나 XML (예 : XStream을 사용하여 일련 번호로 표시)을 통해 직렬화 할 수 있습니다.
당신이 가지고있는 인프라를 활용하는 방법은 매우 간단합니다.
서블릿이 동일한 응용 프로그램 서버에서 실행되고 있습니까? 그렇다면 Spring을 사용하여 B를 A에 삽입하여 메서드를 직접 호출 할 수 있습니다.
서블릿이 다른 컨테이너에서 실행중인 경우에도 Remote
오브젝트로 서블릿을 노출하고 (마찬가지로 Spring을 사용하여) B에 A를 삽입 할 수 있습니다 (단, Spring 컨테이너가 원격 객체에 대한 프록시를 주입한다는 것을 제외하고는)). 이것은 코드에서 차지하는 공간이 거의 없습니다. 즉, 설정 파일에 의해 모두 정의되고 Spring이 모든 것을 처리합니다.
서블릿 B의 isAvailable() 메소드는 Servlet에 저장된 일종의 "글로벌"데이터에 액세스하는 것처럼 보입니다. 이 객체를 개별 서블릿으로 추출하여 두 서블릿에서 모두 사용할 수 있습니까?
가 마스터 호스트에서 서블릿 (A)의 하나 개의 인스턴스이며, 자신의 바람둥이의 인스턴스가 자신의 호스트의 각 서블릿 B의 많은.
java.net.URLConnection
을 사용하면 프로그래밍 방식으로 HTTP 요청을 시작할 수 있습니다. 간단한 튜토리얼 here을 찾을 수 있습니다.
A가 B에게 HTTP 요청을 시작하고 B에서 요청을 수신하고 그에 따라 응답을 리턴하는 서블릿을 갖도록하자. 간단한 response.getWriter().write("ok");
정도가 될 수 있습니다. XML 문자열 등을 반환 할 수도 있습니다. 그런 다음 URLConnection
의 InputStream
에서이 값을 읽을 수 있습니다.
마스터 호스트에는 하나의 서블릿 인스턴스가 있고 자체 tomcat 인스턴스가있는 자체 호스트에는 서블릿 B가 여러 개 있습니다. – wmitchell