2010-11-23 3 views
1

Tomcat과 서블릿을 사용하여 웹 인터페이스를 사용하여 앞으로 서버에서 실행되는 내 로컬 프로그램을 구상 중입니다. 난 그냥 기존 응용 프로그램을 서블릿에 오는 HTTPRequests와 통합하는 방법에 대해 혼란스러워합니다.서블릿 웹 인터페이스를 로컬 클라이언트 애플리케이션에 연결하는 방법은 무엇입니까?

내 애플리케이션이 이미 실행 중이어야하며 서블릿이 제어를 전송할 수 있습니까? 내 프로그램이 서블릿 자체가 될 것입니까? 내 응용 프로그램에 서블릿이 포함되어 있으며 Tomcat은 내 응용 프로그램에 서블릿이 있다는 것을 알고 있습니까?

모든 것이 어떻게 잘 어울릴 지, 그리고 서블릿이 애플리케이션 로직을 호출하는 방법에 대한 조언이 필요합니다 ... 감사합니다! 같은

내가 상상 해요 뭔가 :

  1. 의 HTTPRequest 톰캣에 오는 전화의 Servlet.service (...) (이미 존재하지 않는 경우 서블릿이 생성된다)
  2. 로 서블릿 경로를
  3. 의 Servlet.service() 애플리케이션을위한 새로운 프로세스를 생성되어 있지 않은 경우 애플리케이션이 실행되고 있는지를 체크
  4. 커맨드 라인을 통해 또는 표준 입력을 통해 하나의 새로운 프로세스로의 HTTPRequest 헤더/바디를 보낼 수
  5. 서블릿
  6. 서블릿은 새 프로세스가 완료 될 때까지 기다릴 수도 있고 jus를 기다릴 수도 있습니다. HTTPResponse를 보내고 프로세스가 실행되도록하십시오 (응용 프로그램이 스레드되어야하므로 즉시 응답을 보내 실행합니다).
  7. 다른 요청은 서블릿에 오면
  8. 단계 합리적인 소리 2.

합니까?

별도의 프로세스를 만드는 대신 내 응용 프로그램을 Servlet 내에서 스레드하여 그 방식으로 실행할 수도 있습니다.

답변

1

정확히 무엇이 응용 프로그램인지 알지 못하지만, 내 제안은 현재 응용 프로그램에서 가능한 한 많은 논리를 격리하는 것입니다. 이것은 당신의 "비즈니스"논리 일 것입니다. 그것을 항아리에 포장 된 별도의 프로젝트로 유지하십시오.

웹 레이어로 사용할 새 프로젝트를 만듭니다 (WAR로 패키지되어 있음). 여기에는 비즈니스 로직과 상호 작용하기위한 서블릿 및 JSP 페이지가 포함됩니다. 예를 들어, 어떤 유형의 비즈니스 오브젝트를 작성하기위한 양식이 있습니다. 양식은 서블릿에 의해 "제공"되는 JSP 페이지입니다. 양식을 제출할 때 서블릿은 비즈니스 프로젝트 (jar)에서 양식 제출 및 호출 코드를 처리합니다.

웹 자료는 별도의 계층으로 사용되며 모든 비즈니스 로직을 시각적 웹 측면에서 분리하여 관리하면 웹 프로젝트와 실제 웹 사이에 서비스 계층을 구축 할 수 있습니다. 비즈니스 논리, 비록 조금 뒤쳐 질 수있는 목적에 따라 다릅니다.

+0

감사합니다. 이것이 우리가 한 일입니다. 웹 응용 프로그램과 응용 프로그램을위한 별도의 프로젝트 (우리의 경우에는 매우 다른 것들입니다). 우리는이 둘 사이의 통신을 위해 JMS를 사용하는 서비스 계층을 만들었습니다. –

0

응용 프로그램이 클래스의 개체를 인스턴스화 할 때 뭔가 작업을 수행하는 스레드가 아닌 선형 프로그램이며 개체에 외부 인터페이스 (공용 메서드)가있는 경우를 고려하십시오. 그런 다음 서블릿 컨테이너가 시작될 것이고 객체의 인스턴스를 생성하고 표준 서블릿 메소드 (service(), doGet() 등)에서 메소드를 호출 할 새로운 서블릿 클래스를 작성해야한다. 서블릿 컨테이너 또는 webapp의 클래스 경로에 클래스를 두는 것을 잊지 마십시오.

1

서블릿은 웹 서버에 대한 Common Gateway Interface 프로그램을 구현하는 Java의 방법입니다.그래서 당신이 쓰고있는이 프로그램 (당신은 더 많은 정보를 제공하고 싶어 할 것입니다)은 여러분이 입력을 제공하고, 입력을 처리 한 다음, 응답을 제공하는 프로그램 유형이어야합니다.

컨트롤러 및 모델 클래스에 현재 작성중인 응용 프로그램을 분해 할 것을 제안합니다. 입력 및 출력을 처리하는 것은 컨트롤러입니다. 비즈니스 논리를 다루는 것은 모델입니다. 예를 들어, MVC, Model-View-Controller 패턴에 대해 얘기하고 있습니다.)

그래서 모든 것을 서블릿으로 옮기기 전에 컨트롤러가 커맨드 라인에서 일련의 논쟁, 정확성, 올바른 조합의 조합 등을 확인하십시오.

당신의 모델 코드는 컨트롤러에 의존하지 않는 멋지고 간단한 인터페이스를 가져야합니다. 응용 프로그램 또는 서블릿 계층에서 호출되는지 여부는 알 수 없습니다. 비즈니스 논리에 적합한 매개 변수를 취함으로써 비즈니스 논리를 수행하는 메소드를 제공해야합니다. 따라서 두 숫자의 합을 계산하는 서블릿을 작성하는 경우 모델 계층에는 두 개의 숫자 매개 변수를 사용하여 합계를 반환하는 메소드가 있어야합니다. 그렇게하면 모델을 응용 프로그램이나 서블릿에 놓을 수 있습니다. 그러면 제대로 작동합니다. 컨트롤러 만 변경해야합니다.

서블릿을 작성하는 방법과 애플리케이션을 작성하는 방법에 대해서는 다루지 않겠습니다. 관련 주제이고 많은 예제가 있습니다. 그러나 서블릿이 애플리케이션 로직을 호출하는 방식은 간단합니다. 모델 클래스를 인스턴스화 한 다음 해당 인스턴스에서 메소드를 호출합니다. 다른 Java 응용 프로그램과 동일합니다.

관련 문제