2013-03-07 4 views
0

나는 jetty-6.1.9.jar, jsp-2.1.jar, jsp-api-2.1.jar, servlet-api-2.5-6.1.9.jar를 포함하고 JRE 1.7에서 실행되는 레거시 프로젝트로 작업 중이다. .0_03.Jetty는 JSP를 어떻게 컴파일합니까?

Jetty 서버는 MyServer.java의 main 메소드 내에서 시작됩니다. WebAppContext를 작성하고 WebAppContext.setWar ($ webAppRoot)를 호출합니다. 여기서 $ webAppRoot는 일반적인 WEB-INF 구조 인 디렉토리의 전체 경로입니다.

모든 응용 프로그램 클래스와 종속 JAR은 MyServer.main을 호출하는 클래스 경로에 지정되며 WEB-INF/lib에는 JAR이없고 WEB-INF/class에는 클래스가 없습니다 (예 : 엉망입니다) . html, javascript, css 및 JSP 파일은 $ webAppRoot에 있습니다.

부두 의사가 JSP2.1을 지원한다는 것은 1.6.5가 필수 종속성임을 나타냅니다. 이 프로젝트에는 개미가 포함되어 있지 않지만 JSP는 컴파일 될 때 작동합니다.

응용 프로그램 클래스 파일을 WEB-INF/classes 및 해당 종속 JAR 파일을 WEB-INF/lib로 이동하는 경우 Jetty가 클래스를 찾을 수 없다는 오류가 발생하면 해당 클래스 중 ANT 관련 클래스를 찾을 수 없다는 오류가 발생합니다. JSP. 원래 구성에서 ANT없이 JSP를 컴파일하는 이유는 무엇입니까?하지만 WEB-INF로 작업을 옮길 때 ANT가 필요합니까?

답변

1

여기서 jsp 병을 어디서 구하고 있습니까?

JSP는 부엌 서랍이 더 많은 포크를 가지고있는 미친 기술입니다 ... 저는 최근에 우리가 소비하는 것이 jsp.java.net에서 죽은 것처럼 보이기 때문에 우리의 포크를 옹호했습니다. 우리는 합리적인 경로가 필요합니다. Jetty에게 IP 허용 JSP로 업데이트를 제공합니다. 어쨌든, 나는 현재 7, 8, 9 부두에서 jsp 버전을 사용하고있다. 기본 동작은 시스템 컴파일러를 사용하는 것이며, 특정 속성 (org.apache.jasper.compiler.disablejsr199 = true)이 설정된 경우 대신 현재 배포하고있는 Eclipse 컴파일러 또는 그 이후의 개미를 찾습니다. 그래서 ...이 동작은 사용중인 JSP 구현에 전적으로 의존합니다. classpath에 개미가없고 jsp가 컴파일되고 있다면 시스템 컴파일러가이를 수행하고있는 것입니다. 그렇지 않으면 일식 자바 컴파일러를 포함하는 ejc jar 파일을 찾으십시오.

또한 기존 프로젝트로 작업하고 있지만보다 최신의 지원되는 부두 버전으로 업데이트하는 것이 좋습니다. 그리고 6.106과 마지막 유지 관리 릴리스 사이에 많은 것들이 수정되었으므로 부두 6.1.26으로 업데이트하는 것이 좋습니다. 만약 JSP 문제가 있다면 6.1.26 배포판에서 jsp jar 파일 만 업데이트하면 해결할 수 있습니다. 당신은 그 jsp jar (내가 maven central에있는 org/mortbay/jetty 밑에 있다고 믿는다)를위한 소스를 열어서 그냥 갈 필요가있다.

마지막으로 부두 6을 만진 지 수년이 지났기 때문에 찌르다가 webapp 클래스 로더에 개미를 넣어야하고 시스템 클래스 로더가 있기 때문에 이전에 작동 했나요? $ jetty.home/lib 아래에 있다면 webapp 컨텍스트가 webapp 클래스 로더에서 상위 우선 순위를 사용하도록 설정되었고 거기에서 개미를 꺼냈습니까?

[편집] 6.1.9 용 maven-jetty-jspc-plugin이 있으므로 jsp를 미리 컴파일하고 실행하는 것이 바람직합니다. (http://repo2.maven.org/maven2/org/mortbay/jetty/maven-jetty-jspc-plugin/)

+0

제 생각에 JSP jar는 방금 Jetty-6.1.9 배포본을 다운로드하여 lib/jsp-2.1 디렉토리에서 찾았습니다. – NBW

+0

-verbose : class를 실행하고 jasper 클래스 (JspServletWrapper, JspCompilationContext, JasperLoader, Compiler)가 jsp-2.1.jar에서 호출되는 ANT 종속성을 트리거하는 구성에 문제가있는 것을 발견했습니다. 결국 Jasper 네임 스페이스의 'AntJavaCompiler'가 호출됩니다. 이것은 ANT에 대한 종속성을 트리거합니다. – NBW

+0

글래스 피시가 jsp.java.net으로 JSP impl을 옮기기 전에 좋았습니다. 그리고 우리는 svn repo에서 그것을 꺼내서 조금 패치 한 다음, 그 jar를 풀어 버리고 있다고 생각합니다. 다른 컴파일러를 지원하는 움직임은 지난 5 년 내에 있었을 것입니다. 그렇습니다 ... 당신이 지금 개미와 아마 붙어있는 것처럼 보입니다. 배포하기 전에 문제를 해결할 수 있으면 미리 컴파일해야합니다. –

관련 문제