복붙노트

[SPRING] context.xml에서 자리 표시자를 사용할 수 있습니까?

SPRING

context.xml에서 자리 표시자를 사용할 수 있습니까?

나는 Spring과 Struts를 사용하고 있고 '/META-INF/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. ==============================

    1.Spring의 PlaceholderPropertyConfigurer (Spring 컨텍스트 내에서만 값을 대체)를 사용하는 것은 불가능합니다.

    Spring의 PlaceholderPropertyConfigurer (Spring 컨텍스트 내에서만 값을 대체)를 사용하는 것은 불가능합니다.

    그러나 Replace 태스크를 사용하여 빌드 프로세스 중에 Ant를 사용하는 것이 가능합니다. 같은 것 :

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

    위의 예에서는 속성 이름을 대체 할 토큰 (예 : context.xml에서 "$ {jdbc.url}"이 아닌 "jdbc.url"을 사용해야합니다. 후자가 절대적으로 필요한 경우 중첩 된 요소로 대체 ​​될 토큰을 명시 적으로 명명하여이를 수행 할 수 있습니다.

  2. ==============================

    2.Tomcat의 경우 서버의 server.xml 파일에 연결 풀을 설정하면 사용자 이름 / 암호가 war 파일 외부에있는 것과 같은 방식으로 연결 풀을 설정할 수 있습니다. 다음은 Tomcat 5.5에서 컨텍스트 요소가 작동하는 방법에 대한 정보입니다. http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

    Tomcat의 경우 서버의 server.xml 파일에 연결 풀을 설정하면 사용자 이름 / 암호가 war 파일 외부에있는 것과 같은 방식으로 연결 풀을 설정할 수 있습니다. 다음은 Tomcat 5.5에서 컨텍스트 요소가 작동하는 방법에 대한 정보입니다. http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

    또는 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>
    
  3. from https://stackoverflow.com/questions/1541731/is-it-possible-to-use-placeholder-in-context-xml by cc-by-sa and MIT license