2013-03-07 2 views
0

Я работаю с унаследованным проектом, который включает в себя причал-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. Он создает WebAppContext и вызывает WebAppContext.setWar ($ webAppRoot), где $ webAppRoot - полный путь к каталогу, в котором находится обычная структура WEB-INF.

Все классы приложений и зависимые JAR указаны в пути к классам, который вызывает MyServer.main, в WEB-INF/lib нет классов JAR и нет классов в WEB-INF/классе (да, я знаю, что это испорчено) , Файлы html, javascript, css и JSP живут в $ webAppRoot.

Док-станция, говорящая о JSP2.1, указывает, что ant-1.6.5 является необходимой зависимостью. Этот проект не содержит муравьев, но JSPs компилируются и работают, когда вы нажимаете на них.

Когда я перемещаю файлы классов приложений в классы WEB-INF/и их зависимые JAR-файлы в WEB-INF/lib Jetty выдает ошибку класса, не найденную, заявив, что не может найти класс, связанный с ANT, когда я ударил одну из JSPs. Почему JSPs компилируются без ANT в исходной конфигурации, но когда я перехожу в WEB-INF ANT, требуется?

ответ

1

Где вы получаете эти jsp-банки?

JSP - это сумасшедшая технология, в которой есть больше вилок, а затем кухонный ящик ... Недавно я выступал за то, чтобы мы разворачивали его, потому что тот, который мы потребляем, кажется мертвым (тот, который находится на jsp.java.net), и нам нужен разумный путь к получать обновления на IP-приемлемом jsp в причал. В любом случае, я отвлекаюсь, в настоящее время с версиями jsp, которые мы имеем в причалах 7, 8 и 9, по умолчанию используется системный компилятор, и если задано определенное свойство (org.apache.jasper.compiler.disablejsr199 = true), то это вместо этого ищет либо компилятор eclipse, который мы в настоящее время распространяем, либо муравьиный после него. Итак ... это поведение полностью зависит от используемой вами реализации jsp. Если у вас нет муравей в вашем пути к классам, а jsps компилируются, то вероятность того, что это выполняется системным компилятором. В противном случае найдите файл ejc jar, который содержит компилятор eclipse java, и он может использовать его.

Кроме того, я знаю, что вы работаете с унаследованным проектом, но по-настоящему рекомендуется обновление до более поздней и поддерживаемой версии причала. И запрет на то, что обновление до причала 6.1.26 было бы рекомендовано, так как было зафиксировано много вещей между 6.1.9 и последним релизом обслуживания. Если это не так, если у вас возникли проблемы с jsp, тогда обновление jsp-банок из дистрибутива 6.1.26 может помочь разобраться в этом. Возможно, вам просто нужно открыть источник для этих jsp-банок (которые, я считаю, находятся в org/mortbay/jetty в центральном центре maven).

И, наконец, с тех пор, как я коснулся причала 6, возможно, вам нужно положить муравья в загрузчик классов webapp, и он работал ранее, потому что он был в системном загрузчике классов? Если его под $ jetty.home/lib, то, возможно, контекст webapp был настроен на использование родительского приоритета в загрузчике классов webapp и вытащил муравей оттуда?

Я заметил, что для 6.1.9 есть плагин maven-jetty-jspc, поэтому вам может потребоваться только предварительно скомпилировать jsps и выполнить его. (http://repo2.maven.org/maven2/org/mortbay/jetty/maven-jetty-jspc-plugin/)

+0

Я предполагаю, что эти JSP-банки пришли из дистрибутива Jetty-6.1.9, поскольку я только что загрузил его и нашел в каталоге lib/jsp-2.1. – NBW

+0

Я запустил вещи с классом -verbose: class и заметил, когда все в конфигурации, которая запускает зависимость ANT, вызывает Jasper-классы (JspServletWrapper, JspCompilationContext, JasperLoader, Compiler) из jsp-2.1.jar. В конце концов вызывается «AntJavaCompiler» из пространства имен Jasper. Это вызывает зависимость от ANT. – NBW

+0

ОК, это было хорошо, прежде чем стеклянная рыба переместила их JSP-образ на jsp.java.net, и я думаю, что мы потребляли его из своего репозитория svn и немного исправляли его, а затем выпускали эти банки. Переход на поддержку других компиляторов был бы в течение последних 5 лет, так что да ... похоже, вы, скорее всего, застряли с муравьем. Я бы все же просто предварительно скомпилировал, если можно, и избавиться от любых проблем перед развертыванием. –

Смежные вопросы