2011-01-31 3 views
1

우리의 모든 속성 파일이 아카이브 (war 파일)에 포함 된 특정 환경에 대해 war 파일을 패키지화 할 수있는 빌드가 있습니다.빌드 프로덕션 릴리스 - DB 연결 자격 증명

이제 제작을 시작하려고합니다. 코드베이스가 프로덕션 데이터베이스 암호를 노출해야하고, 프로덕션 빌드 프로파일이 부정적인 영향으로 실행될 위험이있을 수는 없지만 걱정이됩니다.

  1. 은 관리자 오버라이드 시스템 DB를 연결하는 데 사용되는 속성, 또는

  2. 유무 :

    옵션 나는 이러한 위험은 생산 SVN의 세부 사항과를 저장하지 않는 것입니다 부정 할 생각

    컨테이너가 c3p0 대신 DB 연결을 관리하도록하면이 구성을 통해이 구성을 직접 관리 할 수 ​​있습니다.

어떤 조언이 있습니까?

답변

2

이 아닌 소스 관리 시스템에 프로덕션 DB 사용자 이름과 암호를 입력해야합니다. 프로덕션 환경의 관리자가 제어하거나 제한하는 JNDI를 사용하여 앱이 DB 연결 (예 : DataSource)을 가져야합니다. 앱이 톰캣에 배포 된 경우

예를 들어, 당신은 바람둥이/conf의/context.xml에

<Resource name="jdbc/myDB" 
       auth="Container" 
       type="javax.sql.DataSource" 
       maxActive="20" 
       maxIdle="10" 
       maxWait="3000" 
       username="myusername" 
       password="mypassword" 
       driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://myhost:3306/myschema" 
       defaultAutoCommit="false"/> 

에 다음과 같은 한 ..연결은 java:/comp/env/jdbc/myDB에서 사용자 이름이나 비밀번호를 제공 할 필요없이 얻을 수 있습니다. Tomcat 설치는 관리자가 제품 서버에서 보호하므로 제품 서버에서 관리자 권한이없는 사용자는 사용할 수 없습니다.

0

프로덕션 환경에서는 프로퍼티 파일에 자격 증명을 저장하지 않는 방법을 선호합니다. 대신 jndi을 사용하여 자격 증명을 제공하는 응용 프로그램 서버를 선호합니다.

Apache Tomcat을 사용하는 경우, 예를 들어 jndi reference을 참조하십시오.

0

나는 아카이브와 아카이브 외부에서 모두 속성을 사용하려고 시도했으며 아카이브 외부에서 이러한 특성을 관리하는 것이 훨씬 쉽습니다.

어떤 것들은

참고 사항 : 속성이 발견되지 않는 경우는 "localhost"를 사용하여 (예를 들어, 기본값을 사용하도록

수있는 범위 내
  1. , 당신은, 속성에 대한 기본값을 가질 수 있습니다 기본 데이터베이스 연결 URL로 사용).
  2. 코드가있는 소스 제어에서 프로덕션 환경이 아닌 환경의 특성 파일을 계속 보존 할 수 있습니다.

개발자는 이러한 두 가지 정책을 사용하여 프로덕션 관리자에게 프로덕션이 아닌 프로덕션 파일을 관리 할 책임이 있습니다. 또한 대부분의 속성을 소스 제어에 중앙 집중화하여 속성을 중앙 집중화하는 동시에 속성을 충분히 분리 할 수 ​​있습니다.

EDIT : JNDI는 옵션이지만 구조적으로 속성 파일을 외부에 저장하는 것과 동일하므로 다른 환경에서도 느슨하지 않도록주의해야합니다.

+0

외부에 속성이있는 것은 옵션이 아닙니다. 왜 묻지 마세요 :) jndi가가는 길입니다. – JamesC