«Общий» модуль GWT - PullRequest
       33

«Общий» модуль GWT

0 голосов
/ 28 марта 2012

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 28 марта 2012

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

war/WEB-INF/lib/

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

...