"/"사이트를 Java ee 포장으로 마이그레이션 할 때 컨텍스트-경로 참조 처리

StackOverflow https://stackoverflow.com/questions/142965

  •  02-07-2019
  •  | 
  •  

문제

기존 Java 사이트는 Tomcat에서 "/"아래에서 실행되도록 설계되었으며 "/dir/dir/page"와 같은 고정 된 절대 경로에 대한 많은 특정 참조가 있습니다.

이를 Java EE 포장으로 마이그레이션하려면 "/dir/dir/page"가 "/my-context-root/dir/dir/page"가됩니다.

이제 Context-Root는 ServletRequest.getContextPath ()를 사용하여 쉽게 일할 수 있지만 이는 여전히 큰 코드 기반을 마이그레이션하기 위해 많은 코드 변경을 의미합니다. 이 참조의 대부분은 리터럴 HTML에 있습니다.

서틀 필터를 사용하여 OUBOUND HTML에 다시 쓰기를 실험했는데 이는 제대로 작동하는 것 같습니다. 그러나 그것은 약간의 오버 헤드를 소개하고, 나는 그것을 영구적 인 해결책으로 보지 않을 것입니다. (보다 EnforceContextrootfilter-1.0-src.zip 서블릿 필터 접근법).

이 문제를 해결하기위한 더 나은 접근법이 있습니까? 내가 놓친 것이 분명한가요? 모든 의견에 감사드립니다!

도움이 되었습니까?

해결책

관련을 확인하십시오 의문

또한 고려하십시오 urlrewritefilter

또 다른 것 (나는이 darn 게시물을 계속 편집합니다). JSP를 사용하는 경우 (정적 HTML 또는 다른 것) 공통 HTML 태그를 링크 (특히 A, IMG, Form)로 바꾸는 태그 파일을 만들 수도 있습니다. u003Ca href="/root/path">링크u003C/a> 가 될 수 있습니다u003Ct:a href="/root/path"> 링크u003C/t:a> . 그런 다음 태그가 번역을 할 수 있습니다.

이 변경은 SED와 같은 것을 사용하여 "en masse"를 쉽게 수행 할 수 있습니다.

sed -e 's/<a/<t:a/g' -e 's/<\/a>/<\/t:a>/g' old/x.jsp > new/x.jsp

형태의 행동은 SED보다 약간 까다로울 수 있지만 아이디어를 얻습니다.

다른 팁

Apache World는 리디렉션 (mod_rewrite)을 사용하여 동일한 작업을 수행했습니다.

서블릿 세계는 필터를 사용하기 시작했습니다

루비 월드 (또는 ROR)는 더 많은 일을하고 라우팅이라고 부릅니다.

따라서 주변을 돌아 다니지 않습니다 (스마트 레 독을 사용하지 않는 한, 시도한 상태에서 잘 작동합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top