2011-07-25 41 views
6

我正在使用JSsp2和Websphere 7。我已成功創建共享庫並使用Webpsphere管理控制檯指向應用程序,並且它可以成功運行。但是我們真正想要做的是不必通過WAS管理控制檯指向該共享庫,但是具有某種應用級配置,例如在deployment.xml等中,我們可以指向該共享隔離庫的名稱並使用它。我已經通過SO和谷歌,但沒有發現任何事情做到這一點。然而,我知道有商業應用這樣做,但不知道如何。
這從How can I specify a shared library reference at the web module level in Websphere 6.1 deployment descriptors?問題是密切什麼我之後,但我不想爲答案狀態
如何配置EAR以訪問現有的Websphere Shared Lib?

回答

9

我找到了一個方法,只需簡單地跟隨WAS管理控制檯的實際操作。

如果您還沒有EAR文件,請在您的EAR文件中創建deployment.xml。 你會發現像下面

<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亦呈現方式.Accpeting我自己答案可以更好地滿足我的需求,但非常感謝dbreaux的建議。

4

指定版本號或jar名字就是這樣,你不希望有單獨配置每個應用程序或問題你根本不想使用管理控制檯?你可以associate a shared library with an entire server,這可能比每個應用程序更好。

創建這些應用程序關聯的另一種方式是在特定於WebSphere的.xmi部署文件中。這些是在部署時創建的,但也可以包含在WAR/EAR文件中。我不知道這是否會對你有所幫助。如果可以的話,提前創建它們的正式方法是使用Deployment Tools之一,但由於它們只是XML,所以您可能會感覺很容易手動創建它們。

+0

問題是我們做了不想與整個服務器關聯,因爲有一些使用JSF1.2的應用程序,並且管理員不想通過服務器控制檯進行關聯(不知道爲什麼:))我設法通過創建一個條目來實現管理控制檯在場景後面執行的操作標準deployment.xml.Thanks您的答案我已投票。 – Shahzeb

+0

將共享庫與整個服務器關聯是一個很好的建議。 – Frans

2

要追加額外的細節Shahzeb的答案: 我的環境:Websphere 8.5; Windows 7;(Eclipse Luna生成測試.war文件)

我已經在websphere控制檯上安裝了eclipse在websphere服務器上導出的war文件。 然後再次導出並解壓縮以查看自動添加到它以生成EAR的websphere。

[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 

和文件deployment.xml中被放置在 .. \ ibmconfig \細胞\ defaultCell \應用程序\ 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> 

(由於我沒有聲望,我必須在文本中完成所有操作。)

相關問題