2011-11-22 24 views
5

Estoy intentando configurar mi proyecto para que use diferentes nombres de host virtual dependiendo del entorno.¿Puede jboss-web.xml tener acceso a las propiedades?

Sé que podría crear directorios con un archivo jboss-web.xml separado en cada directorio. Pero recientemente cambié este proyecto a maven y quería aprovechar los perfiles. Ya tengo las bases de datos configuradas para que el perfil pueda configurarlas de manera diferente mediante el uso de filtros.

jboss-web.xml:

<jboss-web> 
    <context-root>/</context-root> 
    <virtual-host>${jbossweb.virtualhost}</virtual-host> 
</jboss-web> 

El archivo de propiedades específicas ambiente tiene una entrada para:

jbossweb.virtualhost=hostname.domain.com 

la sección de acumulación archivo POM tiene esta definición

<filters> 
     <filter>src/main/filters/filter-${env}.properties</filter> 
    </filters> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
     <resource> 
      <directory>src/main/webapp/WEB-INF</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 

Justo para una buena medida, la sección de perfiles tiene esta configuración:

<profile> 
    <id>dev</id> 
    <properties> 
     <env>dev</env> 
    </properties> 
    </profile> 

Ni siquiera estoy seguro de si lo que estoy tratando de hacer es posible. Cuando lo intento, Jboss-web.xml tiene el nombre de la variable en la ubicación del host virtual y no el valor.

¿Estoy ladrando el árbol equivocado?

Gracias,

Eric

+0

Se _looks_ como si tuviera todas las piezas en su lugar. Otro enfoque _muy diferente_ es incluir el valor de 'jbossweb.virtualhost' en la definición del perfil. –

Respuesta

10

En realidad, he descubierto una manera de hacer esto:

El jboss-web.xml se parece a esto ahora:

<jboss-web> 
    <context-root>${jbossweb.contextroot}</context-root> 
    <virtual-host>${jbossweb.virtualhost}</virtual-host> 
</jboss-web> 

El archivo de propiedad se ve así:

jbossweb.virtualhost=hostname 
jbossweb.contextroot=/ 

A continuación, la sección pom tiene este aspecto para la configuración experta en la guerra plugin:

   <webResources> 
        <resource> 
         <directory>src/main/webapp/WEB-INF</directory> 
         <filtering>true</filtering> 
         <include>jboss-web.xml</include> 
         <targetPath>/WEB-INF</targetPath> 
        </resource> 
       </webResources> 

Y los filtros se definen por encima de la sección de plug-ins, pero dentro de la sección de acumulación de la siguiente manera:

<filters> 
     <filter>src/main/filters/filter-${env}.properties</filter> 
    </filters> 
+2

la sección webResources es suficiente para permitir el filtrado con propiedades maven en jboss-web.xml. – Donatello

+0

Sé que esto fue respondido hace un par de años, por lo que las versiones pueden ser diferentes; pero pude hacer que esto funcionara en un proyecto de arranque de primavera eliminando el elemento raíz de contexto de jboss-web.xml y la compilación recogió el archivo server.context-path del archivo application.properties. –

Cuestiones relacionadas