나는 자바 애플리케이션 서버로 마이그레이션하려고 생각하고있는 데이터베이스에 대해 대기열 기반 처리를하는 독립형, 헤드리스, 자바 서버 애플리케이션을 가지고있다. 나는 많은 백엔드 자바 경험과 JSP를 가지고 있지만 서블릿 경험은 많지 않다.헤드리스 자바 서블릿?
마치 내 앱을 서블릿에 랩핑하고 시작시 배포하도록하는 방법이있는 것 같습니다 (그리고 하나의 인스턴스 만 배포되었는지 확인하십시오).
몇 가지 질문 : 내 응용 프로그램은 어떤 HTTP (또는 다른) 요청/응답 메커니즘을 가지고 있지 않기 때문에
이1)이 더 URL 매핑이없는 서블릿을 구현하는 어리석은 것? API를 보면 GenericServlet을 구현하고 service() 메소드를 비워두면 될까요?
2) 내 Java 앱의 다른 부분은 들어오는 데이터의 스트림을 받아들이는 자체 네트워크 소켓 (비 HTTP)을 열고 관리합니다. 서블릿 요청/응답 모델에 맞히기 위해서는 상당한 노력이 필요하다고 생각합니다. 서블릿이 자체 네트워크 소켓을 열거 나 관리하는지 확인합니까?
3) 우리는 또한 자바 응용 프로그램과 잘 통합되지 않은 (현재는 coldfusion에있는) 웹 응용 프로그램을 가지고 있습니다 (DB를 통해서만 통신 할 수 있다는 점에서). 우리는 railo (다른 서블릿)을보고 있으며 coldfusion/railo 앱 (동일한 앱 서버에서 실행)이 서로 직접 통신하는 것이 얼마나 쉬운 지 파악하려고합니다. 어쩌면 자바 엔진의 현재 런타임 통계/메트릭을 표시하고 궁극적으로 자바 엔진에서 비즈니스 로직 중 일부를 호출하는 웹 페이지 일 수도 있습니다.
감사합니다,
필자는 실행/관리하는 스레드를 분명히 가지고 있습니다. 서블릿에서 스레드를 생성하는 것이 그렇게 나쁠까요? 스레드가 안전해야하지만 스레드를 생성하는 것에 대해서는 본 적이 없다는 것을 읽었습니다. – Brian
@ 브라이언 그것은 일반적으로 눈살을 찌른 연습입니다. 서블릿에 의해 시작된 관리되지 않는 스레드가 서블릿 컨테이너/서버가 종료 명령에 응답하지 못하게 할 수 있기 때문입니다. 대신 Executor 프레임 워크를 사용하십시오. –
@Brian - 왜 산란 스레드가 나쁜 것으로 간주되는 이유 -> http://stackoverflow.com/questions/533783/why-spawning-threads-in-j2ee-container-is-discouraged/533847#533847. 귀하의 경우 컨테이너가 관리 할 수없는 일을하고 있기 때문에 귀하의 경영 추리를 무효화합니다. – Robin