2013-03-13 3 views
4

У меня возникла проблема с разработкой приложения для WebSphere 7. Вот настройка. У меня есть проект на основе maven, состоящий из нескольких модулей, которые разработаны в RAD 7.5.5.2.WebSphere + RAD + Taglib

Один из модулей - это обычное веб-приложение (война), которое использует JSP и полагается на taglib.

Taglib - это другой модуль - простой Java-проект с двумя файлами, дескриптор taglib и файл тега в тегах META-INF /.

Когда я создаю банку taglib и вручную копирую ее в WEB-INF/lib веб-приложения, тэг выбирается правильно и отображается на странице.

Когда я развертываю проект через RAD - taglib не подбирается. Ошибка говорит:

``` 
com.ibm.ws.jsp.JspCoreException: JSPG0047E: Unable to locate tag library for uri http://juriy.com/myproject/jsp/my-taglib 
``` 

Те же библиотеки тегов, которые упакованы в JAR и добавлены в WEB-INF/lib, отлично работают.

Когда я открываю консоль администратора WebSphere, я вижу, что проект taglib распознается WebSphere. Однако он не упакован как JAR, вместо этого путь к проекту добавляется в путь класса webapp. В

``` 
Troublehooting -> Class Loader Viewer -> Module - com.ibm.ws.classloader.CompoundClassLoader 
``` 

Я вижу запись моего TagLib:

``` 
file:/D:/Data/MyProject/UIComponents/target/classes 
``` 

Другими словами, это выглядит как WS не заботится, чтобы упаковать проект как JAR во время цикла разработки, а затем он не забирали как taglib.

Есть ли способ рассказать RAD (или WebSphere) «Пожалуйста, упакуйте этот проект как JAR, прежде чем добавлять его в путь к классам»? Также приветствуется любой альтернативный способ сделать эту работу. Я не могу копировать банку вручную все время во время разработки - все мы хотим, чтобы все работало автоматически.

Отказ от ответственности: Я не эксперт по WebSphere (только неделя, работающая с этим зверьком), и я, возможно, пропустил некоторые очевидные настройки. Пожалуйста, предложите все, что может решить эту проблему.

+0

Вы можете создать банку только один раз и добавить ее в websphere в качестве общей библиотеки.Поскольку вам не нужно развертывать его каждый раз, и теперь он доступен для всех приложений. –

+0

Спасибо за ваше предложение Грегори. Я буду использовать его в качестве конечного курорта - если хотите, сделайте его «правильным». – Juriy

+0

Вы упаковываете свой проект в проект EAR внутри RAD? –

ответ

0

Насколько я знаю, RAD сделан на платформе затмения. Я знаю, что с maven вы можете создавать артефакты, которые строят jar-файлы и помещаются в локальный репозиторий. Другие модули могут ссылаться на эти банки с помощью переменной M2_REPO. Затем вы используете maven и должны использовать плагины maven для затмения, которые помогают интегрировать maven в eclipse. Но рассмотрите возможность настройки вашего проекта с помощью project builder and ant. Затем вы можете легко запустить муравьиные цели при сборке, чтобы сделать свои банки перед развертыванием. Этот метод используется не только в среде Eclipse IDE, но и в других IDE. Запуск целей муравьев до или после сборки проекта является неоценимой особенностью.

0

Упакуйте свой taglib как банку maven и установите его в локальный репозиторий .m2. Затем укажите зависимость в pom для вашего основного проекта. Он будет втянут для упаковки. Если это решено для локального развития, возможно, это связано с тем, что разрешение рабочей области включено.

Кроме того, добавление банок в WEB-INF/lib в проекте на основе Maven не является наилучшей практикой, поскольку вы обошли основную цель maven, которая предназначена для управления зависимостями, необходимыми для создания проекта.