2013-10-24 2 views
1

우리는 Magnolia 관리 컨텐트를 기존 웹 응용 프로그램의 일부 JSP에 포함하려고합니다. Tomcat에서 우리는 magnoliaPublic 컨텍스트를 배포하고 기존 응용 프로그램 컨텍스트 (즉, 두 개의 다른 WAR 파일)를 따라 실행합니다. 브라우저에서 당신은 모두에 액세스 할 수 있습니다다른 웹 응용 프로그램 컨텍스트에 magnoliaPublic 컨텍스트 콘텐츠 포함

  • http://localhost:8080/app/test.jsp
  • http://localhost:8080/magnoliaPublic/footer

그래서, 예를 들어, 우리가 /magnoliaPublic/footer 같은 목련 페이지 (단지 사업부)를 포함 /app/test.jsp을하고 싶습니다. 우리는 추가하여 그것을 할 관리 :

<c:import url="http://localhost:8080/magnoliaPublic/footer" />

/app/test.jsp에. 이 거의 괜찮지 만, 상대가 가장 좋은 것입니다 포함 : 그것은 비록,

<c:import context="/magnoliaPublic" url="/footer" />

이 후자의 라인은 내가이 길 목련의 필터 체인의 작동에 의한 의심

The requested resource (/magnoliaPublic/footer) is not available 발생 INCLUDE를 디스패치하고 모든 서버/필터/디스 패칭/* 항목에 toMagnoliaResources를 true로 설정합니다.

힌트를 보내 주시면 감사하겠습니다.

감사합니다.

답변

1

IMHO 이것은 Magnolia와는 관계가 없으며 모든 것이 어떻게 작동합니까? 가져 오기 작업.

요청 사항이 Magnolia의 필터 체인에 전혀 도달했는지 확인하려고 했습니까?

애플리케이션 서버에서 요청 추적을 사용하거나 그 사이에 프록시를 삽입하거나 간단히 info.magnolia.debug.DumpHeadersFilter 필터를 Magnolia의 필터 체인에 추가하고 로그를 관찰하면됩니다.

HTH,

+0

실제로 체인의 시작 부분에 덤프 필터를 추가하고 브라우저 요청 만 기록합니다. c : import는 Magnolia에 부딪치지 않도록 아무 것도 출력하지 않습니다. –

1

톰캣은 기본적으로 다른 서블릿 컨텍스트에 액세스 할 수 없습니다. 그 이유는 귀하의 c:importcontext 속성을 사용하여 실패하는 이유입니다. 당신이 성공적으로 가상 호스트에서 실행중인 다른 웹 어플리케이션에 대한 요청 디스패처를 반환 된 ServletContext.getContext()이 응용 프로그램 내에서 호출을하려면 true로

설정 :

톰캣이를 구성하는 crossContext 속성이 . 보안 의식이있는 환경에서 false (기본값)로 설정하면 getContext()가 항상 null을 반환합니다.

출처 : http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

crossContext 힘을 사용하면 문제를 해결합니다.

관련 문제