#jboss #wildfly #wildfly-8 #jboss6.x
#jboss #wildfly #wildfly-8 #jboss6.x
Вопрос:
У меня есть приложение, которое ссылается на файл MY_ PRODUCT_CONF_DIR/ mycustom.properties, в котором есть несколько пар ключ-значение, которые должны быть внешними по отношению к ear, war или jars, развернутым на моем WildFly. Ранее в Jboss 6.1.0. мы сделали это хитрым способом. В jboss 6.1.0 есть набор URL-адресов, видимых для CL, загружающих сервер.
Например ( https://repository.jboss.org/org/jboss/jbossas/jboss-as-distribution/6.1.0.Final /, обратитесь к jboss-6.1.0.Final-srcmainsrcmainjavaorgjbossMain.java )
// Define a Set URLs to have visible to the CL loading the Server
final Set<URL> urls = new HashSet<URL>();
..........
urls.add(new File(MY_ PRODUCT_CONF_DIR)).toURI().toURL()); // I have added the DIR
.........
// Make a ClassLoader to be used in loading the server
final URL[] urlArray = urls.toArray(new URL[]{});
final ClassLoader loadingCl = new URLClassLoader(urlArray, tccl);
// Load the server
server = JBossASServer.class.cast(ServerFactory.createServer(DEFAULT_AS_SERVER_IMPL_CLASS_NAME, loadingCl));
В моем коде я прочитал файл свойств из ClassLoader
URLClassLoader ucl = (URLClassLoader) loader;
url = ucl.findResource(propertiesResource);
final InputStream inputStream = url.openStream();
..........
Итак, есть ли какая-либо возможность сохранить этот механизм? Могу ли я добавить свой CONFIG_DIR в ModuleClassLoader в качестве URLClassLoader?
Есть ли какой-либо способ сохранить файл свойств внешним по отношению к ear / jars и пути к модулю?
Ответ №1:
Вы можете поместить свой файл свойств в модуль и загрузить его таким образом, не используя URLClassLoader для getResource или getInputStream . Другим способом было бы указать путь к вашим файлам свойств в каком-либо системном свойстве, а затем просто выполнить Properties.load(Files.newInputStream(мой путь))