Проблема, включающая изменения фазы после компиляции в артефакте, развернутом на Tomcat

Я разрабатываю приложение Spring MVC, используя ActiveJDBC в качестве моего ORM, сервера Tomcat и IntelliJ в качестве моей IDE.

Для необходимой функциональности ActiveJDBC требует некоторых манипуляций с байтовым кодом (называемых ORM инструментированием) скомпилированных классов. Поэтому после этапа компиляции к скомпилированным классам добавляются статические методы. Все это хорошо, однако, когда я пытаюсь развернуть артефакт своего веб-приложения на Tomcat, WAR содержит скомпилированные классы до манипулирования байтами (инструментирование).

Чтобы включить в скомпилированную выходную публикацию инструментарий, требуемый ActiveJDBC, я пробовал:

Создание артефакта путем перехода в меню «Файл» > «Структура проекта», а затем вручную включение скомпилированного класса, включающего методы, добавленные с помощью инструментовки. введите описание изображения Развертывание описанного выше артефакта приводит к следующей ошибке:

Исходный сервер не нашел текущего представления целевого
ресурса или не желает раскрывать его существование.

Когда вместо этого я использую выходные данные компиляции основного модуля, я могу получить доступ к приложению в браузере, но получаю ошибку 500 на страницах, где исходный код вызывает методы, доступные с инструментарием (задача после компиляции).

Мои вопросы: 1) Требуется ли для создания артефакта для развертывания использовать вывод компиляции основного модуля? 2) Как включить изменения фазы после компиляции в артефакт, если артефакт включает в себя компиляцию основного модуля как есть?


person anishasri    schedule 16.10.2017    source источник


Ответы (2)


Глупая ошибка! Я забыл использовать соответствующую структуру каталогов при сборке артефакта вручную.

person anishasri    schedule 16.10.2017

Хотя вы можете использовать IntelliJ Idea для развертывания, почти никто этого не делает. Просто используйте некоторые примеры из проектов JavaLite: https://github.com/javalite/simple-example и, в частности, подключаемый модуль Maven Instrumentation: https://github.com/javalite/simple-example/blob/master/pom.xml#L31 для инструментовки ваших моделей перед упаковкой. После этого разверните WAR-файл как обычно. Сборка и упаковка в командной строке дадут более стабильные результаты, чем в IDE.

Кроме того, вы можете изучить ActiveWeb для своей веб-части: http://javalite.io/activeweb, потому что он хорошо интегрирован с ActiveJDBC.

person ipolevoy    schedule 16.10.2017