2011-07-25 27 views
6

Estoy usando JSF2 con Websphere 7. He creado una biblioteca compartida con éxito y tengo una aplicación dirigida usando la consola de administración de Webpsphere y funciona correctamente. Pero lo que realmente queremos hacer es no tener que apuntar a Shared Lib a través de la Consola de administración de WAS, pero tenemos algún tipo de configuración de nivel de aplicación, por ejemplo, en deployment.xml, etc., que podemos señalar el nombre de Shared Lib compartido y usarlo . He pasado por SO y google pero no he encontrado nada que me haga eso. Sin embargo, sé que hay aplicaciones comerciales que lo hacen, pero no sé cómo.
Esta pregunta de How can I specify a shared library reference at the web module level in Websphere 6.1 deployment descriptors? es de cerca lo que busco, pero no quiero especificar números de versión o nombres tarro como los estados de respuesta
Cómo configurar EAR para acceder a la existencia de Shared Lib compartida de Websphere?

Respuesta

9

Encontré una forma simplemente siguiendo lo que WAS Admin Console realmente estaba haciendo.

Crea un deployment.xml en tu archivo EAR si aún no tienes uno. Encontrará una referencia al cargador de clases, como a continuación

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

modificarlo y añadir una referencia a la liberary compartida creada en el servidor, como a continuación

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

@dbreaux también ha mostrado una forma .Accpeting mi propia Responde como se adapta mejor a mis necesidades, pero también gracias a dbreaux por tu consejo.

4

es la cuestión sólo que no quiero tener que configurar cada aplicación por separado, o que no quieres usar la consola de administración en absoluto? Puede associate a shared library with an entire server, que podría ser preferible hacerlo para cada aplicación.

La otra forma de crear esas asociaciones de aplicaciones es en los archivos de implementación .xmi específicos de WebSphere. Estos se crean cuando se implementa, pero también se pueden incluir en los archivos WAR/EAR. No sé si eso te ayudaría en absoluto. Si así fuera, la forma oficial de crearlos con anticipación es usando uno de los Deployment Tools, pero como solo son XML, puede sentirse cómodo al crearlos manualmente.

+0

El problema fue que lo hicimos No quería asociarlo con todo el servidor, ya que había algunas aplicaciones que usaban JSF1.2 y los administradores no querían asociarse a través de la consola del servidor (no estoy seguro de por qué :)) Logré hacer lo que la consola de administración hace detrás de la escena al crear una entrada en standard deployment.xml.Gracias por su respuesta, lo he votado. – Shahzeb

+0

Asociar la biblioteca compartida con todo el servidor es una buena sugerencia. – Frans

2

Para anexar detalles adicionales a la respuesta de Shahzeb: Mi entorno: Websphere 8.5; Windows 7; (Eclipse Luna para generar el archivo .war de prueba)

He instalado el archivo war exportado de eclipse en el servidor websphere por consola websphere. Luego se volvió a exportar y descomprimirlo para ver qué websphere agrega automáticamente para generar 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 

Y el deployment.xml archivo se coloca en .. \ ibmconfig \ células \ defaultCell \ Applications \ \ DefaultApp despliegues \ DefaultApp \

cuyo contenido en forma de


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

(Como no tengo reputación, tengo que hacerlo todo en texto ...)

Cuestiones relacionadas