2010-01-06 3 views
0

Netbeans에서 웹 응용 프로그램을 만들고 "aa-bb.war"파일에 응용 프로그램을 패키지화합니다. netbeans에서 프로젝트를 실행할 때 "localhost : 8080/aa/bb"에서 액세스 할 수 있습니다. 이것은 모두 좋다.Tomcat 및 컨텍스트 경로

표준 톰캣 설치로 .war 파일을 옮기는 것이 문제가됩니다. .war을 "webapp"디렉토리에 놓으면 "webapp/aa-bb"로 폭발하지만 실제로 내가 원하는 것은 "webapp/aa/bb"입니다 ("-"대 "/" "aa"및 "bb") ... bb는 "aa"의 하위 디렉토리에 있어야합니다.

Tomcat이 .war 파일 이름을 사용하여 확장 된 dir을 생성하므로 전쟁이 "aa-bb"라고 불리우므로 분명히 하이픈을 사용합니다. 내 "context.xml"파일의 올바른 경로는 "aa/bb"이지만 Tomcat 5 이상에서는 .war에 지정된 컨텍스트 경로를 무시하고 대신 파일 이름을 기반으로하는 경로를 만듭니다.

바람둥이가 결과 URL ("aa-bb"vs "aa/bb")에 약간의 차이가있는 것처럼 보일 수 있지만 강제로 나는 하위 디렉토리를 사용하도록 강제 할 수 있습니까?

답변

0

tomcat의 표준 배포 구조는 모든 응용 프로그램이 첫 번째 계층 구조에 있다는 것입니다. 응용 프로그램 폴더에 놓은 모든 context.war 파일은 결국 다음을 통해 액세스 할 수 있습니다. http://host/context. 나는 당신이 하위 디렉토리 aa/bb를 강요 할 수 없다는 것을 확신하지만 구현을 속일 수있다 : (1) 응용 프로그램 aa.war 만들기, (2) bb라는 aa 응용 프로그램 내에서 디렉토리 만들기 모든 JSP를 가지고 있고, (3) 서블릿이나 필터가 있다면 맵핑도 바꿔라. fb/servlet에 대한 것.

+0

재미있는 일이지만 ... netbeans를 사용하여 패키징하고 있는데, netbeans/ant에서 서브 디렉토리 "bb"에 모든 것을 덤프하는 방법을 알고 있습니까? – user85116

0

어떤 옵션이 있습니까? 최근에 Tomcat이 path=""을 무시한다는 것을 몰랐습니다.

  1. 넣어 앞에 아파치와 톰캣에서 AA-BB에 아파치에서 AA/BB에 대한 요청을 깔때기에 mod_redirect 또는 mod_proxy를 사용합니다.

  2. 사용중인 웹 프레임 워크에 관계없이 UrlRewriteFilter iside the webapp를 사용하십시오. webapp aa.war을 호출 한 다음 UrlRewriteFilter에게 앱 안의/bb /에 대한 요청을/대신에 퍼널하도록 알려줍니다.