Проблема была связана с использованием VFSFileChangedReloadingStrategy в JBoss.
Вот проблема, которая меня немного расстроила: при использовании конфигурации Apache Commons под JBoss 5 я продолжал сталкиваться со следующей ошибкой при попытке сохранить в свой файл конфигурации (который был ресурсом по пути развернутых / classes):
ОШИБКА [org.apache.catalina.core.ContainerBase. [Jboss.web]. [Localhost]. [/ Xxxx]. [Xxxx]] (http-0.0.0.0-8080-1) Servlet.service () для сервлета кремень бросил исключение
java.net.UnknownServiceException: протокол не поддерживает вывод
в java.net.URLConnection.getOutputStream (URLConnection.java:792)
на org.apache.commons.configuration.AbstractFileConfiguration.save (AbstractFileConfiguration.java:449)
Какого черта? Эта ошибка возникала каждый раз, когда я пытался сохранить файл конфигурации. В Tomcat 6.x это работало нормально, но всякий раз, когда я тестировал на JBoss, хотя я мог читать из файла конфигурации, вышеупомянутая ошибка появлялась каждый раз, когда я пытался записать в нее.
JBoss 5.x VFS (виртуальная абстракция файлов) для файлов, которые он развертывает, и это вызывает проблемы с FileChangedReloadingStrategy Commons Config по умолчанию. Таким образом, решение заключается в том, чтобы сделать что-то вроде этого:
VFSFileChangedReloadingStrategy f = VFSFileChangedReloadingStrategy ();
((FileConfiguration) config) .setReloadingStrategy (f);
Оказывается, мы действительно хотим использовать VFSFileChangedReloadingStrategy (что означает использование Apache Commons Config 1.7). Это также требует, чтобы API-интерфейс Apache Commons VFS находился на вашем пути к классам. Хорошая новость заключается в том, что VFSFileChangedReloadingStrategy хорошо работает даже с развертываниями, не относящимися к VFS (т.е. обычными старыми Tomcat и Jetty). Проблема решена!