2011-08-05 5 views
0

Я использую Geronimo с J2EE 5 и Tomcat 6, и я пытаюсь создать одну простую страницу с помощью JSF. Я поместил файлы библиотеки тегов myfaces_core.tld и myfaces_html.tld в WEB-INF, и он работает, но только на Windows. В Linux я получил IOException с неизвестной причиной, когда я развертывал WAR. Чтобы удалить два файла библиотеки тегов, стало возможным развертывание. Но потом я получил сообщение об ошибке, когда открывал страницу в браузере. В нем отсутствовал файл WEB-INF/myfaces_html.tld, который указан в заголовке JSP-файла. В примерах для MyFaces используется не MyFaces TLD, а обычный Sun Java TLD. Я перезаписал URI WEB-INF/myfaces_html.tld до http://java.sun.com/jsf/html ant now Я получаю ошибку Абсолютный uri: http://java.sun.com/jsf/html не может быть разрешен ни в web.xml, ни в файлах jar, развернутых с этим приложением.Lost JSF beginner: Linux, Geronimo и библиотека тегов

Я потерян сейчас. Должен ли я или я должен не помещать файлы описания библиотеки тегов в свою WAR для использования компонентов JSF? Эти файлы уже содержатся в JAR-файлах MyFaces в контейнере Geronimo, не так ли? Контейнер должен иметь одинаковое поведение независимо от платформы или не нужно? Что мне делать, чтобы создать мое простое приложение, действительно независимое от платформы?

ответ

1

Вы должны не извлекать JAR-файлы сторонних библиотек тегов и размещать свои незанятые файлы TLD в папке /WEB-INF. Файлы TLD должны храниться в файлах JAR, где они создаются, и файлы JAR должны быть нетронутыми и просто удаляться в пути к среде выполнения. Независимо от того, какую книгу/учебник/форум предлагает иначе, следует занести в черный список.

Очистка структуры проекта, чтобы избавиться от этих файлов TLD и отменить все изменения, связанные с этим, а также в web.xml, если таковые имеются.

Ваша папка /WEB-INF/lib должна содержать только два файла, чтобы запустить JSF на Tomcat 6: один файл, представляющий абстрактный API, и другие, представляющие конкретную реализацию. Как вы уже, видимо, решили использовать MyFaces, это будет эти два JAR-файлы (вероятно, с номером версии в конце файла, который зависит):

  • MyFaces-api.jar
  • MyFaces-IMPL .jar

Оставьте их в папке /WEB-INF/lib, которая является частью пути прохождения по умолчанию для webapp по умолчанию. Это все. Следующий шаг будет объявлять и сопоставлять FacesServlet в вашем веб-сайте web.xml.

Убедитесь, что вы читаете правильную книгу/учебник.

+0

Кажется, что-то не так с JSF-сервлетом в Linux. В Windows это работает. Geronimo уже содержит реализацию JSF (MyFaces). Чтобы удалить файлы TLD, создайте каталог «WEB-INF» и обновите URI в HTML и базовых библиотеках в соответствии со стандартом JSF (MyFaces tutorial) (измените URI на «http://java.sun.com/jsf/ html' и 'http: // java.sun.com/jsf/html') - это лишь небольшая коррекция, не имеющая никакого эффекта. В любом случае он работает под Windows, а не под Linux. Неизвестная причина - скорее всего, где-то в контейнере Geronimo на Linux, в сервлете JSF. –

+0

Если контейнер уже поставляется с JSF, вы фактически не должны включать никаких в webapp, или вам нужно будет указать конфигурационный файл контейнера или контекстный параметр, который инструктирует контейнер ** не ** загружать в комплекте JSF с контейнером библиотеки (это, по крайней мере, верно для JBoss AS, Glassfish и т. д.). – BalusC