2015-02-04 3 views
0

BaseByBase라는 Java 웹 시작 프로그램이 있으며 다음 스프링 속성 소스 태그 @PropertySource("${appclient}")을 가진 외부 사내 라이브러리가 있습니다. "${appclient}"의 값은 BaseByBase의 JNLP 파일에 <property name="appclient" value="url to location"/>으로 지정됩니다.JNLP 파일의 Spring @PropertySource 위치 문자열 선언

BaseByBase를 jnlp 파일을 통해 실행할 때 모든 것이 정상적으로 작동합니다. 우리는 또한 자신의 BaseByBase를 시작할 수있는 또 다른 jnlp 프로그램 VOC를 가지고 있습니다. VOC 용 JNLP 파일에도 <property name="appclient" value="url to location"/>이 포함되어있어 문제없이 BaseByBase를 시작할 수 있습니다.

이제 BaseByBase를 실행하는 세 번째 프로그램 GATU를 얻으려고합니다. Gatu에는 BaseByBase를 시작하는 VOC와 동일한 코드가 있으며 JNLP 파일에는 <property name="appclient" value="url to location"/>이 포함되어 있습니다. 로컬에서 Gatu를 실행하면 모든 것이 예상대로 작동합니다. 하지만 JNLP에서 GATU를 실행하고 BaseByBase를 시작하면 다음 오류가 발생합니다. Failed to initialize application context: java.lang.IllegalArgumentException: Could not resolve placeholder 'appclient' in string value [${appclient}].

System.setProperty을 사용하여 String 값을 설정하려고했지만 해결되지 않았습니다. propertysource가 특성 파일의 위치를 ​​가리 키도록 라이브러리 코드를 변경했으나 수행하지는 않았습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? JNLP 파일에는 서명이되어 있으므로, JNLP를 통해 안전하지 않은 시스템 속성을 설정하는 곳을 생각할 수 있습니다.

+0

좋은 하나님 .. 숨을 쉬세요! (또는 다른 말로하면, 더 많은 단락을 사용하십시오. 부끄러워하지 마십시오. 그들은 무료입니다.) –

답변

0
@PropertySource(value={"classpath:appclient.properties"}) 
+0

도 그렇게 시도했지만 아무 것도 변경하지 않았습니다. – Brkk

+0

클래스 패스에서 해당 파일을 확인 하시겠습니까? – sunysen

+0

'value = {classpath : appclient.properties "})'파일의 위치를 ​​알려주는 VM 옵션을 전달하지 않고 프로그램을 로컬에서 실행할 때 작동했습니다. 파일은 성공적으로 검색되었지만 jnlp를 배포하고 실행했을 때 작동하지 않았습니다. . – Brkk