[ https://issues.apache.org/jira/browse/WW-4410?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lorenzo Bernacchioni updated WW-4410: ------------------------------------- Affects Version/s: 2.3.16.3 > Custom configuration providers accessing servlet-context > -------------------------------------------------------- > > Key: WW-4410 > URL: https://issues.apache.org/jira/browse/WW-4410 > Project: Struts 2 > Issue Type: Improvement > Components: Dispatch Filter > Affects Versions: 2.3.16.3 > Reporter: Lorenzo Bernacchioni > Priority: Minor > > I'm using custom configuration providers following the suggestion of [this > post|http://cppoon.wordpress.com/2013/11/11/change-apache-struts2-configuration-programmatically/comment-page-1/#comment-157]. > I figured out that my custom configuration provider needed access to the > servlet-context so I patched the code in the Dispatcher class to let, in case > the constructor is available, instantiate a ConfigurationProvider with the > servlet-context as argument > {code} > private void init_CustomConfigurationProviders() { > String configProvs = initParams.get("configProviders"); > if (configProvs != null) { > String[] classes = configProvs.split("\\s*[,]\\s*"); > for (String cname : classes) { > try { > Class cls = ClassLoaderUtil.loadClass(cname, > this.getClass()); > > ConfigurationProvider prov; > try { > Constructor constructor = > cls.getConstructor(ServletContext.class); > prov = > (ConfigurationProvider)constructor.newInstance(servletContext); > } catch (Exception e) { > prov = > (ConfigurationProvider)cls.newInstance(); > } > configurationManager.addContainerProvider(prov); > } catch (InstantiationException e) { > throw new ConfigurationException("Unable to > instantiate provider: "+cname, e); > } catch (IllegalAccessException e) { > throw new ConfigurationException("Unable to > access provider: "+cname, e); > } catch (ClassNotFoundException e) { > throw new ConfigurationException("Unable to > locate provider class: "+cname, e); > } > } > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)