Есть ли какой-либо способ сохранить файл свойств внешним по отношению к ear / jars и модулю для WildFly

#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(мой путь))