2009-12-03 3 views
6

데이터베이스에 blob로 저장된 JSP 페이지를 서버로 보내려고합니다. 따라서 요청이 URL http://mydomain.com/app/list.jsp에 도착하면 DB로 이동하여 list.jsp 리소스를 검색합니다.DB에 저장된 서브 서버

스프링과 타일을 사용하고 있으므로 adispatcher 서블릿과 컨트롤러를 기존의 방식으로 설정하고 작동하십시오. 이것은 스프링 웹이 jar 파일 내에서 javascript 파일과 메시지를 제공해야하는 리소스 서블릿과 원칙적으로 비슷합니까?

JSP는 정적 HTML 일뿐만 아니라 페이지와 관련된 bean (모델 속성)을 가지므로 여전히 EL을 사용하여 bean을 쿼리하려고합니다.

건배

+0

JSP를 아마 로컬 파일 DB에서 추출 할 필요가있다. 나는이 디자인이 어떻게 수행 될지 잘 모르겠다. 예리한 대답을 고대하고있다. :) – Romain

+2

DB에 저장된 JSP가 디스크에 저장된 JSP와 다르기 때문에 사람들은 그것을 할 것이다. DB를 사용하면 트랜잭션, 임의의 메타 데이터를 저장하는 기능, 사용 권한 등과 같은 디스크에없는 많은 기능을 사용할 수 있습니다. 이러한 모든 것을 DB에 저장하고 JSP를 디스크에 저장하는 경우 CMS 부분의 복잡성. DB에 JSP를 저장하는 경우 JSP 로더의 복잡성이 증가합니다. 성능 측면에서 JSP의 초기로드 및 컴파일은 느려지 겠지만 컴파일 된 후에는 성능이 동일해야합니다. –

답변

3

JSP 로딩 및 컴파일은 서블릿 컨테이너에서 구현됩니다. 이 기능을 구현하는 데 사용할 수있는 두 가지 방법이 있습니다.

  1. 서블릿 컨테이너의 JSP 서블릿을 수정하십시오. 오픈 소스 인 Jetty 나 Tomcat을 사용하고 있다면 JSP 서블릿을보고 DB에서 JSP를 읽도록 쉽게 변경할 수 있습니다. 독점적 인 컨테이너에서 사용하기 위해이 중 하나를 적용 할 수 있습니다. 이것은 문제를 해결하는 가장 직접적인 방법이지만 잠재적 버그의 지뢰밭으로 발을 들여 놓고 있습니다.
  2. 데이터베이스를 계획대로 구축하지만 응용 프로그램이 실행되는 동안 실행중인 응용 프로그램의 파일 시스템에 JSP를 복사합니다. 응용 프로그램 서버의 정상적인 JSP 변경 감지는 변경이 발생하고 있음을 알립니다. DB에 업데이트 된 JSP가 있는지 확인하거나, 수정시 JSP를 복사하거나, 예약 된 작업을 사용하여 일정 간격으로 복사하는 필터로 모든 요청을 래핑 할 수 있습니다.

언로드 된 클래스의 메모리 누수에 대해 걱정할 필요가 있습니다. 특히 코드에서 ThreadLocals 또는 다른 정적 변수를 사용하는 경우 특히주의해야합니다. 런타임시 WAR를 언로드하거나 JSP를 다시 컴파일하면 일반 JSP 로더가 이미 문제를 겪고 있습니다. 이는 Java의 한계로 인한 것이며 JDK가 사용되는 방식에 따라 쉽게 해결되지 않습니다. 나는 당신이 그것을 피할 수 없다면, 서버를 다시 시작하지 않고 JSP를 변경하지 않거나 매우 드물게 권하고 싶습니다.

관련 문제