Я пытаюсь развернуть свое приложение в openshift, и у меня возникла проблема с его запуском. Приложение развертывается локально в точно такой же версии JBoss (JBoss AS 7.1.1 Final), и оно работает, пока оно не работает при развертывании в openshift. Я не использую масштабирование.
Проблема заключается в примере кода:
String s= SimpleClass.class.getResource("/myproperties.properties").getPath();
prop.load(new FileInputStream(s));
При развертывании локально в JBoss AS он работает, как и ожидалось. Однако, когда я развертываю его в экземпляре openshift, возникает исключение:
java.io.FileNotFoundException: /content/Mailinglist.war/WEB-INF/classes/myproperties.properties (No such file or directory)
java.io.FileInputStream.open(Native Method)
java.io.FileInputStream.<init>(FileInputStream.java:146)
java.io.FileInputStream.<init>(FileInputStream.java:101)
mailinglistonline.server.export.util.PropertiesParser.parseDatabaseConfigurationFile(PropertiesParser.java:15)
РЕДАКТИРОВАТЬ:
Mailinglist.war/WEB-INF/classes/myproperties.properties
является правильным и тем же, что и у меня локально, однако префикс /content
довольно странный, поскольку, вероятно, каталог no/content существует в openshift. Вероятно, этот путь должен идти к экземпляру JBoss, который развернул этот.war. Вопрос в основном заключается в том, почему создается такой путь/префикс, и если я могу как-то заставить его работать.
Вместо использования Class.getResource()
вы должны использовать Class.getResourceAsStream()
и загружать свои свойства таким образом. Использование пути ресурса будет работать только в том случае, если вы разворачиваете свою ВОИС взорван. Я не считаю, что развертывание взорвалось на OpenShift.
Что-то вроде следующего было бы лучшим способом справиться с этим.
Properties props = new Properties();
props.load(SimpleClass.class.getResourceAsStream("/myproperties.properties"));
/content/Mailinglist.war/WEB-INF/classes/myproperties.properties
, существует ли путь -/content/Mailinglist.war/WEB-INF/classes/myproperties.properties
?Mailinglist.war/WEB-INF/classes/myproperties.properties
является правильным и таким же, как у меня локально, однако префикс/content
довольно странный. Вопрос главным образом в том, почему генерируется такой путь / префикс, и если я могу каким-то образом заставить его работать. Я предоставлю эту информацию на вопрос