Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法保存到JBoss 5.1中的commons配置_Java_Tomcat_Jboss5.x_Apache Commons Config - Fatal编程技术网

Java 无法保存到JBoss 5.1中的commons配置

Java 无法保存到JBoss 5.1中的commons配置,java,tomcat,jboss5.x,apache-commons-config,Java,Tomcat,Jboss5.x,Apache Commons Config,我正在编写一个web应用程序,它使用Apache Commons config来读/写system.properties文件。文件本身位于WEB-INF/classes/config中。阅读没有问题,当我使用ApacheTomcat部署时,我可以对其进行写入。但是,当我使用JBoss部署应用程序时,我无法写入(使用cofig.setProperty(…)。我得到以下错误(仅限JBoss): 2012-01-06 12:53:48879错误[org.apache.catalina.core.Con

我正在编写一个web应用程序,它使用Apache Commons config来读/写system.properties文件。文件本身位于
WEB-INF/classes/config
中。阅读没有问题,当我使用ApacheTomcat部署时,我可以对其进行写入。但是,当我使用JBoss部署应用程序时,我无法写入(使用
cofig.setProperty(…)
。我得到以下错误(仅限JBoss):

2012-01-06 12:53:48879错误[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[flint].[flint].(http-0.0.0-8080-1)Servlet flint的Servlet.service()引发异常 java.net.UnknownServiceException:协议不支持输出 位于java.net.URLConnection.getOutputStream(URLConnection.java:792) 位于org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:449) 位于org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:377) 位于org.apache.commons.configuration.AbstractFileConfiguration.possiblySave(AbstractFileConfiguration.java:750) 位于org.apache.commons.configuration.AbstractFileConfiguration.clearProperty(AbstractFileConfiguration.java:789) 位于org.apache.commons.configuration.AbstractConfiguration.setProperty(AbstractConfiguration.java:481) 位于org.apache.commons.configuration.AbstractFileConfiguration.setProperty(AbstractFileConfiguration.java:782) 位于com.talecris.flint.server.config.SystemConfiguration.setResultInvalidColor(SystemConfiguration.java:571) 位于com.talecris.flint.controller.SystemAdminController.SetSystemColor(SystemAdminController.java:496) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 正如我所说,它在Tomcat中运行得很好。
system.properties
权限看起来很好(
owner=Jboss
)。我甚至打开了rw的权限供每个人测试,但我仍然会遇到同样的错误。是否有一些Jboss设置阻止我的应用程序写入其部署路径


我可以将文件和子文件夹写入部署目录,但无法将更改写入
system.properties
(通过apache commons配置)。

问题与在JBoss上使用vfsFileChangedLoadingStrategy有关

有一个问题让我有点沮丧:在JBoss5下使用Apache Commons配置时,我在试图保存到配置文件(这是deployed/classes路径下的一个资源)时一直遇到以下错误:

Servlet flint的错误[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[xxxx].[xxxx].(http-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(虚拟文件抽象)用于它部署的文件,这会导致Commons Config的默认FileChangedLoadingStrategy出现问题。因此,修复方法是执行以下操作:

vfsFileChangedLoadingStrategy f=vfsFileChangedLoadingStrategy(); ((FileConfiguration)config.setReloadingStrategy(f)


事实证明,我们确实希望使用VFSFileChangedReloadingStrategy(这意味着使用Apache Commons Config 1.7)。这还要求Apache Commons VFS API位于类路径上。好消息是VFSFileChangedReloadingStrategy即使在非VFS部署(即普通的旧Tomcat和Jetty)下也能很好地工作.问题解决了!

还有一件事值得注意,我正在使用CombinedConfiguration:CombinedConfiguration combined; 2012-01-06 12:53:48,879 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/flint].[flint]] (http-0.0.0.0-8080-1) Servlet.service() for servlet flint threw exception java.net.UnknownServiceException: protocol doesn't support output at java.net.URLConnection.getOutputStream(URLConnection.java:792) at org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:449) at org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:377) at org.apache.commons.configuration.AbstractFileConfiguration.possiblySave(AbstractFileConfiguration.java:750) at org.apache.commons.configuration.AbstractFileConfiguration.clearProperty(AbstractFileConfiguration.java:789) at org.apache.commons.configuration.AbstractConfiguration.setProperty(AbstractConfiguration.java:481) at org.apache.commons.configuration.AbstractFileConfiguration.setProperty(AbstractFileConfiguration.java:782) at com.talecris.flint.server.config.SystemConfiguration.setResultInvalidColor(SystemConfiguration.java:571) at com.talecris.flint.controller.SystemAdminController.setSystemColors(SystemAdminController.java:496) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)