Spring MVC Плагин Архитектура - PullRequest
       2

Spring MVC Плагин Архитектура

6 голосов
/ 04 августа 2011

Я новичок в JavaEE, но имею некоторый опыт работы с ASP.NET MVC.Я знаю, что с ASP.NET MVC мы можем создать плагиновую архитектуру с веб-приложением ASP.NET MVC, чтобы вы могли создать dll со структурой MVC и поместить ее в существующее веб-приложение ASP.NET MVC, чтобы оно работало без компиляции в Интернетеприложение.http://www.wynia.org/wordpress/2008/12/05/aspnet-mvc-plugins/

Интересно, возможна ли такая архитектура с Spring MVC.Например, когда я создаю файл jar (или war) со структурой MVC и помещаю его в существующее веб-приложение Spring MVC, он должен работать без перекомпиляции веб-приложения.Если это возможно, как я могу этого достичь?Любая ссылка будет оценена.

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Это возможно без перекомпиляции, но, вероятно, не без перезапуска. Вы можете создать .jar, который вы поместите в каталог WEB-INF / lib. С помощью сканирования classpath вы сможете развернуть новые контроллеры при запуске. Вы можете полностью пропустить представление и напрямую выводить данные в ServletResponse. Рендеринг вида из банки может или не может быть возможным, я не знаю.

1 голос
/ 11 августа 2011

Похоже, вы хотите найти "hotdeploy".

То, что вы запрашиваете, является не функцией Spring, а скорее функцией JVM и сервера приложений. Сервер приложений может видеть, что ваши классы действительно изменились, и используя некоторые хитрые хитрости ClassLoader, он может загружать новые версии в работающую JVM по мере их появления. Java на самом деле не была разработана для такой работы, поэтому есть некоторые проблемы (ClassLoader, утечка памяти, hotdeploy - хорошие ключевые слова для получения дополнительной информации о потенциальных проблемах и возможных решениях). Я не рекомендовал бы это для производственного использования, но это может быть удобно во время разработки.

Поскольку это особенность серверов приложений, фактические детали зависят от конкретного сервера приложений и объясняются в его документации.

Если вы просто хотите какую-то магию плагинов, а не горячее развертывание, есть другие вещи, которые вы могли бы сделать. Пользовательский ClassLoader может загружать классы из любого источника (файла, сети, базы данных ...), который вы хотите, а затем вы можете создавать его экземпляры и использовать их с отражением. (Это то, что происходит, когда вы развертываете войну в Tomcat / JBoss или где-либо еще). Доступ и динамическая перезагрузка неклассных ресурсов в файлах jar / war намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...