2011-07-25 13 views
6

Websphere 7 ile JSF2 kullanıyorum. Paylaşılan bir lib dosyasını başarıyla oluşturdum ve Webpsphere Admin Console'u kullanarak sivri bir uygulama oluşturdum ve başarılı bir şekilde çalışıyor. Ancak, gerçekten yapmak istediğimiz, WAS Yönetici Konsolu aracılığıyla Paylaşılan Lib'e işaret etmek zorunda kalmamaktır, ancak, örneğin, Paylaşımlı İzole Lib'in adını gösterebileceğimiz ve kullanabildiğimiz deployment.xml vb. Gibi bir tür uygulama düzeyi yapılandırmasına sahip olmaktır. . SO ve google'dan geçtim ama bunu yapan hiçbir şey bulunamadı. Ancak bunu yaparken ticari uygulama olduğunu biliyorum ama nasıl olduğunu bilmiyorum.
How can I specify a shared library reference at the web module level in Websphere 6.1 deployment descriptors? gelen bu soru yakından ne sonra yaşıyorum ama cevap devletler
WebSource Shared Lib'a erişmek için EAR nasıl yapılandırılır?

cevap

9

WAS Yönetici Konsolu'nun aslında ne yaptığını takip ederek bir yol buldum.

Henüz yoksa, EAR dosyanızda bir deployment.xml oluşturun. Sen

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

bunu değiştirin ve paylaşılan liberary başvurusunu eklemek için aşağıdaki gibi sınıf yükleyicisi bir başvuru bulacaksınız @dbreaux de kendi .Accpeting bir yol göstermiştir

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

altında gibi sunucu üzerinde oluşturulan benim ihtiyaçlarına daha iyi cevaplar ama dbreaux için çok teşekkürler.

4

olarak versiyon numaraları veya kavanoz adlarını belirtmek istemiyor ayrı ayrı her bir uygulamayı yapılandırmak zorunda kalmak istiyorum ya da yok sadece o konu mi Yönetici konsolunu hiç kullanmak istemediniz mi? Her uygulama için bunu yapmak tercih edilebilir olan associate a shared library with an entire server.

Bu uygulama ilişkilendirmelerini oluşturmanın diğer yolu, WebSphere'e özgü .xmi dağıtım dosyalarındadır. Bunlar dağıtıldığında oluşturulur, ancak WAR/EAR dosyalarına da eklenebilir. Bunun sana yardım edip etmeyeceğini bilmiyorum. İsterseniz, onları zamanın önünde oluşturmanın resmi yolu Deployment Tools'dan birini kullanıyor, ancak sadece XML olduklarından, bunları el ile oluştururken rahat hissedebilirsiniz.

+0

Sorun şu ki JSF1.2 kullanan bazı uygulamalar olduğu için tüm sunucuyla ilişki kurmak istemediğinden ve Yöneticiler sunucu konsolu ile ilişkilendirmek istemediğinden (emin olmadığından emin değilim :)) bir giriş oluşturarak yönetim konsolunun arkasında ne yaptıklarını yönetmeyi başardım standart deployment.xml. Cevabınız için teşekkür ettik. – Shahzeb

+0

Paylaşılan kitaplığı tüm sunucuyla ilişkilendirmek iyi bir öneridir. – Frans

2

Şahzeb'in cevabına daha fazla ayrıntı eklemek için: Çevrem: Websphere 8.5; Windows 7; (test dosyası oluşturmak için Eclipse Luna)

Websphere konsolunda, websphere sunucusunda eclipse'den aktarılan savaş dosyasını yükledim. Ardından tekrar dışa aktarın ve EAR oluşturmak için web sitesinin otomatik olarak hangi içeriğe eklendiğini görmek için paketi açın.

[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 

Ve dosya deployment.xml hücreleri \ .. \ ibmconfig yerleştirilir \ defaultCell uygulamalar \ DefaultApp \ dağıtımlarını \ \ DefaultApp şeklinde

kimin içeriğin \


<?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> 

(Hiçbir itibarım olmadığından, hepsini metin olarak yazmalıyım ..)

İlgili konular