Jasper in Jetty는 GetoutputStream에 불법 상태를 던지지 만 Tomcat에 대한 것은 아닙니다.
문제
현재 Tomcat 5.5.25에서 실행중인 웹 응용 프로그램이 있습니다. JSP 및 UI 변경에 대한 빠른 새로 고침 시간을 활용하기 위해 Jetty 6에 포트를 입력하려고합니다.
내 JSP 파일은 JSP 2.0을 준수하기 때문에 Maven Jetty 플러그인 웹 사이트에서 제안 된 구성을 사용하여 Maven에서 Jetty를 실행하고 있습니다. 이 구성은 Apache의 Jasper JSP Compiler 버전 5.5.15를로드합니다. (Maven Respository에서도 구할 수있는 것은 5.5.23이지만 동일한 결과가 있습니다.)
Jetty에서 타일을 사용하여 구성된 내 홈페이지는 ServletResponseWrapperInclude.getOutputStream ()에서 불법 스테이트 렉스로 날려 버립니다. 분명히 Tomcat 아래에서는 이것을하지 않습니다.
나는 우리 타일에 관한 것이 무엇인지 이해하기 위해 고군분투하고 있으며, 재스퍼가 Tomcat이 아닌 부두에서 불평하게 할 것입니다.
해결책
이것은 대답이 많지 않을 수도 있지만 타일에 빈 타일이 포함되어있을 때이 오류가 발생한다는 것을 발견했습니다.
마스터 타일 JSP를 통해 빈 타일에 대한 참조를 제거 함으로써이 문제가 사라집니다.
다른 팁
와우 - 좋은 찾기! 내가 방금 발견 한 또 다른 해결책은 타일 포함을 빈/널 정의보다는 빈 문자열로 정의하는 것입니다.
다시 말해, 타일을 다음과 같이 정의했다면, 나는 당신이 설명하는 불법 스테이트 예식을 쳤다.
<definition name="login" extends="main.layout">
<put name="title" value="Login" type="definition" />
<put name="headinclude" value="" type="definition" />
<put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>
반면에 타일을 다음과 같이 정의하면 예외가 사라집니다.
<definition name="login" extends="main.layout">
<put name="title" value="Login" type="definition" />
<put name="headinclude" value="" type="string" />
<put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>
이상한 버그, 이상한 해결책이지만 나에게 효과적입니다!