2008-11-11 4 views
1

배경 : 2002-2003 년 동안 Java를 기반으로하는 이전 CMS로 작성된 시스템이 있습니다. 우리는 바람둥이, 줄무늬, 그리고 sitemesh를 사용하여 새로운 것들로 계속 전진하고 싶습니다. 우리는 이전 CMS에서 가져온 네비게이션, 레이아웃, "포드", js, CSS 등을 사용하여 일관된 모양과 느낌을 갖도록 몇 가지 새 앱을 제공합니다.java 웹 응용 꾸미기/문제 포함

이제 우리는 모든 코드 중복을 없애기 위해 일종의 해결책이 필요합니다. Google의 앱은 현재 동일한 VM에서 실행되고 있지만 변경 될 수 있습니다. 우리는 모든 Tomcat 인스턴스가 몇 가지 공통 요소에 액세스 할 수있는 방법이 필요합니다. 이러한 요소는 일부 서버 측 항목을 수행 할 필요가 없을 수도 있습니다.

우리가 지금까지 생각해 낸 가장 좋은 점은 c : import를 사용하여 필요한 것을 얻고 바로 연결하는 꽤 표준적인 sitemesh 데코레이터를 만드는 것입니다.이 솔루션은 네트워크 오버 헤드로 인해 실패 지점을 소개합니다. 우리는 < % @ include file = "/ something.jsp"%>를 보았습니다. 그러나 이는 단지 문맥에 상대적인 것으로 보입니다. 우리는 c : import를 사용하여 localhost를 가리킬 수 있습니다. 이것은 지금까지 가장 좋은 해결책 인 것 같습니다.

더 단순하게 만들 수있는 다른 템플릿/꾸미기 프레임 워크가 있습니까 (Tiles?)? 우리는 무엇을 놓치고 있습니까?

답변

1

나는 당신이 여기서 무엇을하려고하는지 잘 모르겠습니다. 내 해석은 다음과 같습니다. 많은 앱에서 재사용 할 수있는 많은 리소스가 있습니다. 이 파일을 모든 앱에 복제하고 싶지는 않습니다. 앱간에 일관성을 유지하기가 어려울 수 있습니다.

이것이 귀하의 질문이라면, jar 파일에 공통 리소스를 유지하는 것이 좋습니다. 이렇게하면 여러 가지 장점주지 않는다 :

  1. 당신의 자원이 로컬을 - 어떤 네트워크 오버 헤드
  2. 당신은 자원에 대한 업데이트를 제어 할 수 있습니다.

nr2의 예 : 일반적인 페이지 레이아웃을 page-layouts-1.x.jar로 유지합니다. 당신은 그것을 사용하는 애플 리케이션에 영향을 미치지 않는 페이지 레이아웃의 마이너 릴리즈를 계속 만들고 있습니다. 드롭 인 대체물입니다. 언젠가는 앱을 완전히 다시 디자인하고 2.0.jar이라는 페이지 레이아웃을 공개하기로 결정했습니다. 이렇게하려면이를 사용하는 앱을 다시 작성해야합니다. 이제는 앱이 서버의 공유 클래스 로더에 보관하는 것과 달리 페이지 레이아웃을 번들로 묶어 2.0 레이아웃으로 마이그레이션하는 것이 전부 또는 아닌 일은 아닙니다. 한 번에 하나의 응용 프로그램을 마이그레이션하여 2.0 레이아웃을 사용할 수 있으며 나머지는 여전히 1.x 레이아웃을 사용합니다.

JSF와 Facelets를 사용하여 매우 성공적으로 수행하고 있습니다.

Weblets을보고 싶을 수 있습니다. SiteMesh 또는 Tiles가 클래스 경로에서 리소스를 제공하는 것에 대한 직접적인 지원을 얻었는지 전혀 알지 못합니다. 그러나이를 수행하기 위해 사용자가 조정할 수 있다고 가정합니다.

희망 하시겠습니까?

1

우리는 몇 년 동안 Sitemesh를 사용해 왔으며 그것에 대해 많은 감정을 가지고 있습니다.

나는 표준 JSP 태그 파일 (.tag 또는 .tagx)을 사용하여 applydecorator를 사용하는 편이 더 낫습니다. 필자는 applydecorator 태그가 태그 파일의 출현으로 인해 쓸모 없게되었다고 생각하지만 너무 많은 Sitemesh 사용자는주의를 기울이지 않았습니다.

거의 모든 Sitemesh 사용법은 이러한 종류의 것입니다. 우리는 JSP 페이지가 레이아웃으로 명시 적으로 참조할만한 몇 가지 공통 페이지 템플리트를 갖습니다."표준 레이아웃을 사용하십시오. 여기 탐색 메뉴가 있으며 여기 페이지의 본문이 있습니다." 태그 파일은이 기능의 정확한 복제본이지만 표준화되고 모든 J2EE 웹 도구에서 지원되며 다른 종속성보다는 컨테이너에 내장되어 있습니다.

실제로 JSP 페이지 자체가 Sitemesh에 대한 참조가없는 페이지를 꾸미기 위해, 나는 그것이 고차원에서 의미가 있다고 생각하지만, 여전히 전체 페이지가 다시 구문 분석되는 것을 좋아하지 않는다.

이 두 번째 문제는 Sitemesh의 잘못이 아닙니다. Servlet API와 함께 작동해야한다는 점을 감안할 때, 내가 할 수있는 다른 것을 알지 못한다. 그러나 스트림 기반 Servlet API에 대한 DOM 기반 대안이 가치가 있는지 궁금하게 생각합니다. 즉, 서블릿이 출력을 스트림에 쓰는 대신 노드에 트리를 추가하면 어떻게 될까요? 이렇게하면 올바른 형식의 결과물을 적용하고 Sitemesh와 같은 구조적 변형을 수행하는 것이 더 저렴 해지며 출력을 XHTML, HTML 또는 JSON과 같은 다양한 형식으로 인코딩 할 수 있습니다.