2015-08-03 5 views
2

Я пытаюсь использовать Microsoft Application Insights с моим загрузочным приложением Spring.Проблема с удалением объекта из файла внутри контейнера

Он использует JAXB для загрузки XML-конфигурации из ApplicationInsights.xml (хранится в/Java/основные/ресурсов), используя следующий код: https://github.com/Microsoft/ApplicationInsights-Java/blob/master/core/src/main/java/com/microsoft/applicationinsights/internal/config/JaxbAppInsightsConfigurationBuilder.java

Это отлично работает при запуске приложения пружинный загрузки через Gradle (как ресурс существует в нормальной файловой системе).

Однако если я создаю файл банку для этого проекта и попытаться запустить его, то я вижу следующее сообщение об ошибке:

javax.xml.bind.UnmarshalException 
- with linked exception: 
[java.io.FileNotFoundException: C:\Users\u\Code\ExperimentationService\file:\C:\Users\u\Code\ExperimentationService\build\libs\experimentationService-0.1.0.jar!\ApplicationInsights.xml (The filename, directory name or volume label syntax is incorrect)] 

я вижу ту же проблему при работе в среде Linux также.

Есть ли что-нибудь, что я могу сделать, чтобы сделать xml-файл доступным для unmarshaller или это что-то, что нужно изменить в sdk для Application Insights?

+0

что является '' после 'experimentationService-0.1.0.jar' ??? –

+0

Я не уверен - я думаю, что это просто синтаксис urar jar – Septih

+1

@Septih Да, вы правы .. это jar path;) – Xstian

ответ

4

Это выглядит как ошибка в SDK. Я прошел через SDK-код с помощью отладчика, и он фактически находит файл внутри jar, он просто не может его прочитать (поскольку this question утверждает, что он не существует в файловой системе, а в банке).

Одна вещь, которую вы могли бы попробовать, тем временем помещает XML-файл в тот же каталог, что и jar (SDK проверит его для файла конфигурации). Я знаю команду AppInsights - я буду следить за ними, чтобы узнать, можем ли мы опубликовать исправление. Изменим вопрос, когда узнаю больше.

EDIT:

Я говорил с командой AppInsights Java SDK. Исправлена ​​ошибка, и она должна появиться на следующей неделе с новой версией.

EDIT:

Вот PR:! https://github.com/Microsoft/ApplicationInsights-Java/pull/257

+0

получил самую последнюю версию, и она работает! – Septih

0

Следует использовать загрузчик классов.

Окна:

c:\your-jar-file.jar/path/of/your/file/foo.xml 

Linux:

/home/your-jar-file.jar/path/of/your/file/foo.xml 

Код

InputStream is = this.getClass().getClassLoader().getResourceAsStream("path/of/your/file/foo.xml"); 
+0

Это нужно изменить внутри sdk, а не моего проекта - правильно? Я не вижу способа переопределить, как sdk получает его конфигурацию. – Septih

+0

Я думаю, нет, [см. Эту ссылку] (http://stackoverflow.com/q/8258244/3364187) – Xstian

Смежные вопросы