2014-02-18 1 views
1

내 데이터베이스에 대한 사용자 지정 구성 파일이 있고 내 Play 프로젝트가 전쟁에 패키지로 제공 될 때이를 외부화하려고합니다.Play 2 Framework의 외부 구성

내가 -DConfig.file 자바 명령을 build.sbtjavaOptions을 시도했지만 내 파일이 검색되지 ...

내 라인 : javaOptions in run += "-Dconfig.file=conf/database.conf"

와 Tomcat 서버 내 배치 된 전쟁이다 :

/mywar/META-INF/MANIFEST.MF

/mywar/WEB-INF/lib/myplayproject.jar

(다른 종속성)

lib 디렉토리에 내 conf 파일을 넣습니다. /lib/conf/database.conf

어디에서 잘못 했습니까? (이 링크를 기반 : http://www.scala-sbt.org/0.12.3/docs/Detailed-Topics/Forking.html)

답변

0

톰캣에 대한 당신의 전쟁을 배포하는 경우, 당신의 옵션이 무시됩니다 이유를 설명 할 수있는, SBT가 관련되어 표시되지 않습니다.

재생은 실제로 전쟁으로 배치되지 않습니다. 필자는 타입 세이프 설정 라이브러리를 통해 코드에서 설정 파일을 수동으로로드하는 것이 가장 쉬운 방법이라고 생각합니다.

+0

그래서 jvm 명령이 작동하지 않습니까? Play2War 플러그인은 내 전쟁을 생성하는 데 사용하는 것으로, explodedJar 함수가 있으므로 내 문제를 해결할 수 있지만 가지고있는 버전에서는 작동하지 않습니다. 그리고 typesafe 설정의 경우 이것은 내 구성 파일을 구문 분석하는 데 사용됩니다 , 그리고 그것에 액세스 할 수 없습니다. – Azuken

0

컨테이너에 배포 할 때 JVM 프로세스를 제어 할 수 없으므로 명령 줄 옵션을 지정하여 시스템 속성을 설정할 수 없습니다.

여기에서 가장 쉬운 방법은 설정 파일의 이름을 reference.conf 또는 application.conf로 바꾸는 것입니다. 이 두 이름은 클래스 경로에서 구성 라이브러리에 의해 자동로드됩니다.

별도의 파일을 유지하려면 reference.conf 또는 application.conf를 편집하여 include "database.conf"을 추가 할 수도 있습니다.

그렇지 않으면 수동으로 설정 파일을로드 할 수 있습니다. ConfigFactory.parseResource을 사용하여 클래스 경로를 검색하십시오.

클래스 경로 리소스를 포함하는 것 외에도 파일과 URL을 포함시킬 수 있습니다. include url("http://example.com") 또는 include file("foo.conf") 구문을 사용하십시오. 직접 손으로 (코드에서) ConfigFactory 물론 URL과 파일을 구문 분석 할 수 있습니다.

충분히 유연하지 않은 경우 두 가지 방법으로 포함을 사용자 정의 할 수도 있습니다.

하나는 사용자 정의 ConfigIncluder 다른 하나는, 일반적인 자바 방법으로 사용자 정의 URL 프로토콜을 만들 예를 들어 Creating custom URI scheme using URI classhttp://www.cooljeff.co.uk/2009/12/12/custom-url-protocols-and-multiple-classloaders/을 볼 수있다 http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigIncluder.html

을 만드는 것입니다. 그런 다음 include url ("myproto : foobar")을 사용하십시오.

+0

그래,하지만 내 문제가 해결되지 않습니다 : 마침내이 방법으로 내 conf는 프로젝트 항아리에있을거야, 그리고 그 .. 싶지 않아요. – Azuken

+0

당신은 (또는 구문 분석) 파일이나 URL을 포함 할 수 있습니다 classpath 자원. –