Как настроить EAR для доступа к существующей WebSphere Shared Lib?

Я использую JSF2 с Websphere 7 . Я успешно создал общий lib и указал приложение с помощью консоли администратора Webpsphere, и оно успешно работает . Но то, что мы действительно хотим сделать, - это не указывать на эту общую Lib через консоль администратора, но иметь какую-то конфигурацию уровня приложения e.g в процессе развертывания.xml и т. д., которые мы можем указать на имя этого общего изолированного Lib и использовать его . Я прошел через SO и google, но не нашел ничего такого . Я однако знаю, что есть коммерческое приложение делает это, но не знаю, как .
этот вопрос Как указать ссылку на общую библиотеку на уровне веб-модуля в дескрипторах развертывания Websphere 6.1? близко то, что я после, но я не хочу указывать номера версий или имена jar, как говорится в ответе

3 ответов


Я нашел способ, просто следуя тому, что на самом деле делала консоль администратора.

создать развертывания.xml в файле EAR, если у вас его еще нет . Вы найдете ссылку на загрузчик классов, как показано ниже

<classloader xmi:id="Classloader_1311552732281" mode="PARENT_FIRST">

измените его и добавьте ссылку на общий Liberary, созданный на сервере, как показано ниже

 <classloader xmi:id="Classloader_1311552732281" mode="PARENT_FIRST">
        <libraries libraryName="JSF2_SHARED_LIB" sharedClassloader="true"/>
 </classloader>

@dbreaux также показал путь .Аккпетинг мой собственный ответ, как соответствует моим потребностям лучше, но большое спасибо dbreaux за советами.


проблема в том, что вы не хотите настраивать каждое приложение отдельно или вообще не хотите использовать консоль администратора? Ты можешь!--1-->связать общую библиотеку со всем сервером, что может быть предпочтительнее делать это для каждого приложения.

другой способ создания этих ассоциаций приложений находится в WebSphere-specific .файлы развертывания данные. Они создаются при развертывании, но также могут быть включены в файлы WAR/EAR. Я не знаю, это бы тебе помогло. Если бы это было так, официальный способ создать их раньше времени-использовать один из Инструменты Развертывания, но так как они просто XML, вы можете чувствовать себя комфортно, создавая их вручную.


добавить дополнительные детали, чтобы ответить Shahzeb по : Моя среда: Websphere 8.5; Windows 7; (Eclipse Luna для генерации тестирования .war file)

Я установил файл war, экспортированный из eclipse на websphere server с помощью WebSphere console. Затем снова экспортировал его и распаковал, чтобы увидеть, что websphere автоматически добавляет к нему для создания EAR.

[folder]META-INF
  [folder]ibmconfig
  [file]application.xml
  [file]ibm-application-bnd.xmi
  [file]ibm-application-runtime.props
  [file]MANIFEST.MF
  [file]was.module
  [file]was.policy
  [file]was.webmodule

[file]myWAR.war

и развертывание файла.xml помещается в ..\ibmconfig\cells\defaultCell\applications\defaultApp\развертывания\defaultApp\

чье содержание в виде


<?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_1417052686904">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1417052686904" deploymentId="0" startingWeight="1" binariesURL="$(APP_INSTALL_ROOT)/[server service name]Cell/myWAR.ear" useMetadataFromBinaries="false" enableDistribution="true" createMBeansForResources="true" reloadEnabled="false" appContextIDForSecurity="href:[server service name]Cell/myWAR" filePermission=".*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755" allowDispatchRemoteInclude="false" allowServiceRemoteInclude="false" asyncRequestDispatchType="DISABLED" standaloneModule="true" enableClientModule="false">
    <targetMappings xmi:id="DeploymentTargetMapping_1417052686904" enable="true" target="ServerTarget_1417052686904"/>
    <classloader xmi:id="Classloader_1417052686904" mode="PARENT_FIRST"/>
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1417052686904" deploymentId="1" startingWeight="10000" uri="myWAR.war" containsEJBContent="0">
      <targetMappings xmi:id="DeploymentTargetMapping_1417052686905" target="ServerTarget_1417052686904"/>
      <classloader xmi:id="Classloader_1417052686905"/>
    </modules>
    <properties xmi:id="Property_1417052686904" name="metadata.complete" value="true"/>
  </deployedObject>
  <deploymentTargets xmi:type="appdeployment:ServerTarget" xmi:id="ServerTarget_1417052686904" name="server1" nodeName="[server service name]"/>
</appdeployment:Deployment>

(поскольку у меня нет репутации, я должен сделать все это в тексте.. )