Tomcat Класс перезарядки и Hybris
В Hybris
развитие окружающей среды, мы ищем для уменьшения Hybris
сервер (Tomcat
) перезапускается после каждой модификации классов,
Помимо известных инструментов доступны (JRebel
, HotswapAgent
,...), мы пытаемся использовать tomcat
Механизм перезагрузки класса / веб-приложения по умолчанию на сервере: reloadable="true"
Это работает как шарм при внесении некоторых изменений в классах под extention webroot
папка,
Но это не тот случай, когда изменения вносятся в соответствии с [Extention]/classes
папка.
Итак, вопрос:
Можно ли сделать так, чтобы сервер hybris (tomcat) знал об изменениях в папке [Extention]/classes и перезагрузил соответствующее веб-приложение? знаю это hybris
имеет собственный механизм загрузки классов!
Environment :
Hybris 5.4
Tomcat 7.0
JDK 1.8
С наилучшими пожеланиями
-------- РЕДАКТИРОВАТЬ 1-------
Инструмент сборки:
Мы используем только ant
Команды для сборки / очистки... проекта, The IDEs
(eclipse, intelliJ...) используются только для редактирования исходного кода.
Иерархия папок:
[HybrisFolder]
|__bin
|__platform
|__custom
|__[ExtentionFolder]
|__classes
|__web
|__webroot
|__WEB-INF
|__classes
Пробовал решения (это не сработало)
Добавить [ExtentionFolder]/classes
папка как смотрел ресурс в tomcat:
- Первый вариант:
Добавьте его как WatchedResource в контексте веб-приложения:
<Context reloadable="true" path="[ExtentionName]" docBase="[ExtentionFolder]/web/webroot">
<Manager pathname="" />
<Loader platformHome="[PlatformFolder]" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />
<WatchedResource>[ExtentionFolder]/classes</WatchedResource>
</Context>
==> Это не работает
- Второй вариант:
Добавьте его как ExtraResource в контексте веб-приложения:
<Context reloadable="true" path="[ExtentionName]" docBase="[ExtentionFolder]/web/webroot">
<Manager pathname="" />
<Loader platformHome="[PlatformFolder]" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />
<Resources className="org.apache.naming.resources.VirtualDirContext" extraResourcePaths="/WEB-INF/classes=[ExtentionFolder]/classes"/>
</Context>
==> Я получаю странную ошибку, как будто это была двойная загрузка одного и того же класса (первая загрузка была сделана с помощью PlatformInPlaceClassLoader Hybris, а вторая загрузка - tomcat)
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException:
Bean named 'myBean' must be of type [x.y.z.DefaultMyBean], but was actually of type [x.y.z.DefaultMyBean]