Description
When the application starts and there is no FileManager specified as initParam, the JBossFileManager gets added.
This results in the check happening everytime a FileManager is requested.
(When turning on logging, i can see it happening 12 times when starting a simple application)
org.apache.struts2.dispatcher.Dispatcher
... private void init_FileManager() throws ClassNotFoundException { if (initParams.containsKey(StrutsConstants.STRUTS_FILE_MANAGER)) { ... } else { // add any other Struts 2 provided implementations of FileManager configurationManager.addContainerProvider(new FileManagerProvider(JBossFileManager.class, "jboss")); } ... } ...
com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory
private FileManager lookupFileManager() { Set<String> names = container.getInstanceNames(FileManager.class); ... for (FileManager fm : internals) { if (fm.support()) { return fm; } } return null; }
My suggestion would be to not add it if it's not supported.
I don't know what the best way to do this would be.
The possibility i was thinking of so far involves the following:
- Creating a seperate utility class to check if it can support it
- perhaps a public static innerclass of JBossFileManager with public static method(s) to check it?
- or a seperate class (although i think this might be awkward)
- adding a test around adding the JBossFileManager to only do it when it could be supported.
additional information:
- log messages were noticed by adjusting the log4j2 configuration in the form-processing application from struts-examples and starting it.
Attachments
Issue Links
- links to