GitHJub 문제를 기반으로 문제의 일부는 JVM 매개 변수를 전달하는 방법과 "spring.config.location"을 사용하는 방법입니다.
저는 Azure Insights에 익숙하지 않지만 올바르게 이해하면 ApplicationInsights.xml 파일을로드하려고 시도하고 자동으로 구성됩니다. 그래서 이전에 이미 초기화되었으므로 이전에 제안한대로 WebConfigurerAdapter에서 설정할 수 없습니다. 맞습니까? 어쨌든 그 부분을 남겨 뒀지 만 빨리로드해야하므로 클래스 패스에 파일을 최대한 빨리 추가하는 몇 가지 추가 방법을 제공했습니다.
새로운 재료가
먼저 원래 GitHub의 람 게시 한이 줄을보고 받아 "파일의"클래스 경로 "하지 않고,
java -jar build/libs/file-gateway.jar --spring.config.location=classpath:/apps/conf/ApplicationInsight.xml
대신 값이해야 그냥 폴더 경로를 "접두사. 또한 '-'대신 '-D'를 사용해보십시오.
java -jar build/libs/file-gateway.jar -Dspring.config.location=/apps/conf/
속성은 스프링 부트의 자동 구성 속성 파일이있는 디렉토리를 참조해야합니다. 또한 특정 "application.properties | yml"파일을 참조하기 위해 작동 할 수도 있습니다.
그걸로 제 이전 제안이 효과가있을 것 같습니다. 올드 제안
당신이 자원을로드하기위한 독특한 방법이 필요한 경우
, 당신은 응용 프로그램에 자원 핸들러를 추가 할 수 있습니다.
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {
@Value("${telemetry.folder}")
private String telemetryFolder;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceLocations(telemetryFolder);
}
}
그리고/또는 당신은 아파치 IO와 함께로드 할 수 : 당신이 사용하는 API는 훨씬 이전에 초기화 할 필요가없는 경우
가 @Value("${telemetry.file}")
private String telemetryFile;
@Autowired
private ResourceLoader resourceLoader;
public String telemtryXml(){
return org.apache.commons.io.IOUtils.toString(resourceLoader.getResource(telemtryFile).getInputStream());
}
그러나 이것은에만 작동합니다. GitHub의 문제에 대한 당신의 마지막 게시물에서
더 새로운 물건
, 당신이 시도 :
java -jar build/libs/file-gateway.jar -Dapplicationinsights.configurationDirectory=/apps/conf/
대신 java -jar build/libs/file-gateway.jar -applicationinsights.configurationDirectory="/apps/conf/"
를,이 같은 JVM 매개 변수로 속성을 추가하려고
뒤에 대문자 'D'문자를 추가했음을 주목하십시오. 경로에서 따옴표를 제거했습니다.
다른 방법으로 클래스 경로에 파일을 추가 할 수 있습니다.
디렉토리를 JVM 클래스 경로에 추가하십시오.
자바 -cp "빌드/libs와/파일 gateway.jar :/응용 프로그램/conf의/*"your.package.MainSpringBootApplication
이것은 당신이 (보통)는 메인 클래스를 지정해야합니다 '@SpringBootApplication'으로 주석을 달고 main 메소드를 포함하고있다. 이전과 같이 jar를 실행하지는 않지만 여전히 classpath에 추가합니다.
- SpringBoot를 잊어 버리고 JEE 개발자로서 귀하의 뿌리로 돌아가십시오. "src/main/resources/META-INF"폴더 나 "src/main/webapp/META-INF"폴더 아래에 앱용 "context.xml"을 추가하십시오. 나는 실행 가능한 war 파일을 만드는 중이며 jar 파일을 만드는 것을 선호한다.
예제의 context.xml :
<?xml version='1.0' encoding='utf-8'?>
<!-- path should be the context-path of you application.
<Context path="/">
<Resources className="org.apache.catalina.webresources.StandardRoot">
<PreResources base="/apps/conf"
className="org.apache.catalina.webresources.DirResourceSet"
internalPath="/"
webAppMount="/WEB-INF/classes"/>
</Resources>
</Context>
는 또한 EL과 JVM 매개 변수를 사용할 수 있습니다.
그래서 당신이 함께 항아리를 실행하면 :
<!--snip -->
<PreResources base="${applicationinsights.configurationDirectory}"
<!--snip -->
희망하는 데 도움이 :
를 어떻게 배포 및 실행됩니다
당신이 가진 자원 기반을 설정할 수 있습니다 귀하의 응용 프로그램 (OS, 클라우드 플랫폼 등)은 무엇입니까? – Pytry
다음은 전체 문제 description.https : //github.com/Microsoft/ApplicationInsights-Java/issues/472 – Muni