2012-01-13 2 views
4

Java webapp (mywebapp이라고 부름)을 실행 중입니다. 현재Jetty webapp url의 루트 요소를 제거하려면 어떻게해야합니까?

내가 로컬로 지정하여이 웹 애플리케이션 내 페이지에 액세스 : 그러나

http://localhost:9000/mywebapp/mystuff 

, 내가 사용하여 접근 할 필요가 :

http://localhost:9000/mystuff 

내가 어떻게 할 수 있습니까? 좀 confs 덤비는 시도했지만, 아무 소용이 ...

이 내 현재 root.xml입니다 : 또한 시도

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/root</Set> 
    <Set name="war"> 
     <SystemProperty name="app.webapps.path"/>/mywebapp.war 
    </Set> 
</Configure> 

:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/</Set> 
    <Set name="war"> 
     <SystemProperty name="app.webapps.path"/>/mywebapp.war 
    </Set> 
</Configure> 

내가 메이븐을 사용하고 있습니다 그것이 차이를 만들 수 있는지 확실하지 않습니다.

감사합니다.

답변

4

컨텍스트 경로를 "/"으로 설정하려면 컨텍스트 배포를 사용하는 것이 좋습니다. 주 : 경로 스펙 맵핑을 위해 컨텍스트 경로 문자열을 지정해야합니다. 빈 컨텍스트 경로 문자열 ""은 컨텍스트 루트에 대한 요청의 매핑 결과로 유효합니다. 서블릿 스펙 12.2 절 참조)

Jetty 7.x에서는 컨텍스트 경로 할당이 DeploymentManager에 할당 된 AppProviders에 의해 처리됩니다. 부두 배포에 기본적으로

, WebAppProvider 및 ContextProvider이 활성화 모두. 이것은 mywebapp.war 파일을 어디에 둘 것인지 결정하는 데 영향을 미치기 때문에 나중에 알아두면 중요합니다.

${jetty.home}/start.ini 파일을 참조하십시오, 당신은 그것이 etc/jetty-webapps.xml에 대한 참조 및 etc/jetty-contexts.xml

WebAppProvider의 역할 (* .WAR 같은) 어떤 배포 응용 프로그램에 대한 ${jetty.home}/webapps/ 디렉토리에주의를 기울여야하는 것입니다 모두 포함 된 것을 볼 수 있습니다 및 파일 이름과 같은 이름의 컨텍스트에 배치하십시오. 즉 ${jetty.home}/webapps/MyApp-2.4.war이 컨텍스트 "/MyApp-2.4"에 배포됩니다. 문맥 "/"에 배포 할 특별한 "root.war"예약어도 있습니다. 이것이 가장 쉬운 배포 메커니즘이지만 배치 세부 사항에 대한 제어는 희생됩니다.

ContextProvider의 역할은 모든 jetty-xml 형식의 배치 가능한 컨텍스트에 대해 ${jetty.home}/contexts/ 디렉토리에주의하는 것입니다.이 배포 메커니즘을 사용하면 배포를 최대한 제어 할 수 있으므로 xml 파일은 궁극적으로 org.eclipse.jetty.server.handler.ContextHandler 기본 클래스 (이 중 WebAppContext (war/servlets/etc))의 일부로 제어됩니다. 가장 일반적으로 사용되는 것은 WebAppContext 기반 xml 파일을 지정하고 웹 응용 프로그램을 구성하는 파일 및 디렉토리, 사용할 임시 디렉토리 및 사용할 Context Path와 같은 것을 제어하는 ​​것입니다.

  1. 것이 확인하십시오 ContextProvider 기반 배포는
  2. 가 선언하는 ${jetty.home}/contexts/mywebapp.xml 만들기 (etc/jetty-context.xml가 있는지 확인)를 start.ini에서 활성화되어 있는지 확인합니다 :

    은 당신이하고 싶은 것 것은하는 것입니다 <Set name="contextPath">/</Set> 옵션

  3. 당신이 당신의 start.ini에서 etc/jetty-webapps.xml 존재가있는 경우, 는 그 같은 웹 애플리케이션 및 배포 혼란을 배포 할 수있는 WebAppProvider 원인이됩니다하지${jetty.home}/webapps에 mywebapp.war을 배치해야합니까.

마지막으로 jetty distribution에서 어떻게 수행되는지 확인할 수 있습니다. ${jetty.home}/contexts/test.xml을 열고 둘러보세요. ContextProvider의 ${jetty.home}/contexts/test.xml"/" 컨텍스트 경로에 사용하여 ${jetty.home}/webapps/test.war을로드하는 것을 볼 수 있습니다.

다른 메모는 로그를 참조하십시오.

2012-01-13 13:56:28.779 : 정보 : oejsh.ContextHandler : 시작됨 oejwWebAppContext {/, 파일 : /tmp/jetty-0.0.0.0-8080-test.war -_- any-/webapp WebAppContext이 {/, 시작일

  • 것을 저에게 말한다 /},/home/joakim/code/jetty/distros/jetty-distribution-7.6.0.RC3/webapps/test.war

    합니다 (루트 컨텍스트 경로)

  • 임시/작업 디렉토리 사용 file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/
  • 웹 응용 프로그램 지정 사용 /home/joakim/code/jetty/distros/jetty-distribution-7.6.0.RC3/webapps/test.war.

업데이트 : 빈 컨텍스트 경로에 대한 설명을 명확히합니다.

+0

자세한 답변을 주셔서 감사합니다 - perfect :) – laura

+0

빈 컨텍스트 경로가 "서블릿 사양 3.0에서 효과적으로 금지되어 있습니까?" 이 효과에 대한 특정 언급을 인용 할 수 있습니까? – Gili

+0

@Gili 나는 그 진술을 좀 더 명확하게 업데이트했다. –

2

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications를 참조하십시오 : 웹 애플리케이션이 root.war 호출되거나 디렉토리 루트/다음 부두가/맥락에서 그것을 배치라고

합니다.

추신 : 나는 부두를 사용한 적이 없으며 Google에서 찾기까지 3 초가 걸렸습니다.

+0

감사합니다 ... 내 부서가 우리의 전쟁 root.xml을 호출하는 것에 만족스럽지 않고 경로를/root로 설정해도 작동하지 않습니다. (나는 또한 구글을 시도했다 ...) – laura

+0

http://wiki.eclipse.org/Jetty/Howto/SetContextPath를 보라. 이 파일에서 컨텍스트 경로를/(또는 빈 문자열, 나도 모름)로 설정하십시오. –

+0

좋은 시도하지만 이것은 답변이 아니며, 이것은 단지 2 초 만에 Google에서 발견 한 리소스를 가리키고 있습니다. 난 stackoverflow 그것을 아래로 바보, 명확한 예제없이 나쁜 설명서를 가리키는하여 스마트 행동하지 필요합니다. (링크의 예는 충분히 명확하지 않습니다). – PascalVKooten

관련 문제