2009-10-09 45 views
4

我使用Spring和Struts和在「/META-INF/context.xml」是否有可能使用佔位符的context.xml

<Context cachingAllowed="false" useHttpOnly="true"> 
<Resource name="jdbc/xxx" auth="Container" type="javax.sql.DataSource" 
      factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      username="xxxxx" password="xxxxx" 
      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
      url="jdbc:sqlserver://xxx:1433;databaseName=xxx;"/> 
</Context> 

以下條目是否有可能在實現下面的方式,

<Context cachingAllowed="false" useHttpOnly="true"> 
    <Resource name="jdbc/xxx" auth="Container" type="javax.sql.DataSource" 
       factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="${jdbc.username}" password="${jdbc.pwd}" 
       driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
       url="${jdbc.url}"/> 
</Context> 

我applicationContext.xml中已經得到了下面,

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/xxx" /> 
</bean> 

我要拿起值來自屬性文件的jdbc.username和jdbc.pwd。

回答

1

它使用Spring的PlaceholderPropertyConfigurer(只Spring上下文中替換的值)是不可能的。

然而它,有可能期間使用Replace任務生成過程中使用Ant。例如:

<replace file="META-INF/context.xml" replacefilterfile="my.properties" /> 

請注意,上面的屬性名稱是要替換的標記 - 例如,你需要在你的context.xml中使用「jdbc.url」而不是「$ {jdbc.url}」。如果後者是絕對必需的,則可以通過將明確命名標記替換爲嵌套<replacefilter>元素來實現。

+0

感謝ChssPly76爲您的答案,將盡力實現這一點。 – SyAu 2009-10-09 05:11:05

1

對於Tomcat,你可以設置在服務器的server.xml文件連接池,這樣,用戶名/密碼是你的war文件之外。下面是關於上下文元素如何在Tomcat 5.5中運行的一些信息。或者,您可以使用來自Spring配置文件的來自Apache的獨立的DBCP包,並使用jdbc.properties替換您的用戶名/密碼。例如:

<context:property-placeholder location="jdbc.properties"/> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName"> 
    <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value> 
    </property> 
    <property name="url"> 
    <value>${jdbc.url}</value> 
    </property> 
    <property name="username"> 
    <value>${jdbc.username}</value> 
    </property> 
    <property name="password"> 
    <value>${jdbc.password}</value> 
    </property> 
    <property name="initialSize"> 
    <value>30</value> 
    </property> 
    <property name="maxActive"> 
    <value>100</value> 
    </property> 
    <property name="maxWait"> 
    <value>10000</value> 
    </property> 
</bean> 
相關問題