как установить Java class loader PARENT LAST

У меня есть веб-приложение spring mvc, которое мне нужно изменить загрузчик классов. Мне нужно поменять загрузчик Class, чтобы быть равным на parent_. Я использую WAS 6.1 и уже имею сценарий jacl из предыдущего веб-приложения, которое я могу скопировать для выполнения этой работы.

в последнем приложении использовался Apache ant, и они сделали так, чтобы развертывание зависело от запуска сценария jacl.

в моем новом веб-приложении я использую Maven install для создания файла war и am развертывание этого файла war на моем сервере приложений.

Как установить загрузчик классов в PARENT_LAST с помощью maven? Я знаю, как это сделать в консоли, но если бы был способ сделать это с помощью сценариев, было бы неплохо.

также Эта настройка будет помещена где-то в файл war, чтобы при развертывании приложения настройка была подобрана. Этот вопрос исходит из моего непонимания того, как работают сценарии jacl?

спасибо

3 ответов


Если вы только развертываете сам файл WAR, вы не можете контролировать это, но если у вас есть файл WAR в файле EAR, вы можете использовать развертывание.решение xml. Развертывание.XML-файл будет выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1347529484613">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1347544766353" startingWeight="99" warClassLoaderPolicy="SINGLE">
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1347543866613" startingWeight="1" uri="YourWebApp.war" classloaderMode="PARENT_LAST"/>
    <classloader xmi:id="Classloader_1347543866613" mode="PARENT_LAST"/>
  </deployedObject>
</appdeployment:Deployment>

как только вы закончите, все, что вам нужно сделать, это добавить файл в правильном месте сборки проекта EAR, предполагая, что вы используете src/main/application что будет src/main/application/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml и построить ухо, используя Maven как обычно.

во время развертывания сервера будет подобран был.


AFAIK нет способа предварительно настроить войну для PARENT_LAST во время сборки. Политика загрузки классов задается во время развертывания, поэтому способ ее установки зависит от способа развертывания приложения.

изменение политики с помощью скрипта очень проста. Скрипты запускаются с помощью . Фрагмент Jython ниже выполняет эту работу. Его можно легко преобразовать к Jacl.

dep = AdminConfig.getid('/Deployment:app_name/')
depObject = AdminConfig.showAttribute(dep, 'deployedObject')
classldr = AdminConfig.showAttribute(depObject, 'classloader')
AdminConfig.modify(classldr, [['mode', 'PARENT_LAST']])
AdminConfig.save()

Websphere использует развертывание.xml-файл для управления настройками развертывания каждого модуля в файле ear. Вы можете изменить параметр classloader в развертывании.xml по следующему пути:

/MyTestEAR/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.в XML

Я не знаю, как вы можете настроить это в Maven.