2012-03-27 3 views
0

У меня есть модуль GWT, который включает в себя несколько DTO, которые я хочу получить как на сервлете, так и на клиенте. При разработке в Eclipse, я сделал модуль отдельный проект с XML GWT:«Общий» модуль GWT

<module rename-to='commonmodels'> 
    <source path="models"/> 
    </module> 

У меня есть еще один проект GWT, который содержит пользовательский интерфейс, а также код сервлета. Я включил проект commonmodels (с использованием сборки Path-> работы-> Add) и включен модуль включает заявление в своем главном проекте:

<inherits name="com.techflow.bcweb.common.CommonModels" /> 

Затем я сделать вызов RPC, который создает объект (который имеет свой класс определенный в CommonModels) на сервлет и возвращает его клиенту.

Все это, похоже, работает в режиме размещения в GWT, но когда я запускаю его и разворачиваю на сервере, он генерирует исключение ClassDefNotFound. Я проверил войну и подтвердил, что файл .class из включенного модуля отсутствует. Мой вопрос: как сообщить компилятору GWT не только компилировать включенные классы модулей в javascript, но и сделать эти классы доступными для сервлета? Я знаю, что в проекте GWT вы можете создать «общую» папку, которая сделает ее классы доступными как для клиента, так и для сервлета. Есть ли способ маркировать классы в автономном модуле как «общие», так что любые модули GWT, которые наследуют его, могут обращаться к своим классам как в клиенте, так и в сервлет?

Заранее благодарим за любую помощь!

+0

Ваша проблема не связана с GWT. Вы недостаточно писали о том, как вы создаете приложение или развертываете его на сервере. – mabn

ответ

0

При развертывании основного проекта на сервер проект даже не знает, что существует ваш другой проект! Eclipse «Project >> Add» вещь работает только при запуске проекта из Eclipse. Чтобы исправить это, вы просто должны создать файл банку, содержащий commonmodels двоичные файлы, а затем добавить его в классы бен папку вашего главного проекта:

war/WEB-INF/lib/ 

Если вы не используете Maven ... то просто установить проект в ваш репозиторий и добавьте к нему зависимость в вашем файле pom.xml.

+0

Спасибо за ответ Ренато. Я хотел найти более удобный способ сделать это, не делая банку, но похоже, что это стандартный подход. Я дал ему попробовать, и он отлично работает. – Fangbot

+0

Единственный другой способ, которым я знаю, - использовать Maven. – Renato