JAR que faz o load do properties de outras aplicações!
1 resposta
stolakos
Bom dia Pessoal!
Tenho um JAR que carrega um arquivo de properties, ele vai ficar no servidor Websphere em uma shared lib, esse arquivo que ele vai carregar vai ficar dentro da aplicação que vai chamar esse JAR, deu para entender???
Estou tendo um problema na referência desse arquivo, eu sei o caminho dele dentro das aplicações porque já foi definido exemplo (config/application.properties), mas não sei o caminho completo para achar no servidor, quando subo a aplicação e tendo fazer o load do arquivo dá um erro porque não consegue achar o arquivo.
Consegui fazer o que eu estava querendo…acho importante compartilhar a solução, então, segue abaixo o código da classe:
public abstract class Property{
privatestaticfinalbooleanTHROW_ON_LOAD_FAILURE=true;privatestaticfinalbooleanLOAD_AS_RESOURCE_BUNDLE=false;privatestaticfinalStringSUFFIX=".properties";privatestaticPropertiesloadProperties(Stringname,ClassLoaderloader){if(name==null)thrownewIllegalArgumentException("null input: name");if(name.startsWith("/"))name=name.substring(1);if(name.endsWith(SUFFIX))name=name.substring(0,name.length()-SUFFIX.length());Propertiesresult=null;InputStreamin=null;try{if(loader==null)loader=ClassLoader.getSystemClassLoader();if(LOAD_AS_RESOURCE_BUNDLE){name=name.replace('/','.');// Throws MissingResourceException on lookup failures:finalResourceBundlerb=ResourceBundle.getBundle(name,Locale.getDefault(),loader);result=newProperties();for(Enumeration<String>keys=rb.getKeys();keys.hasMoreElements();){finalStringkey=(String)keys.nextElement();finalStringvalue=rb.getString(key);result.put(key,value);}}else{name=name.replace('.','/');if(!name.endsWith(SUFFIX))name=name.concat(SUFFIX);in=loader.getResourceAsStream(name);if(in!=null){result=newProperties();result.load(in);// Can throw IOException}}}catch(Exceptione){result=null;}finally{if(in!=null)try{in.close();}catch(Throwableignore){}}if(THROW_ON_LOAD_FAILURE&&(result==null)){thrownewIllegalArgumentException("could not load ["+name+"]"+" as "+(LOAD_AS_RESOURCE_BUNDLE?"a resource bundle":"a classloader resource"));}returnresult;}publicstaticPropertiesloadProperties(finalStringname){returnloadProperties(name,Thread.currentThread().getContextClassLoader());}