Java 6
的 jboss-as-7.1.1.Final
我需要复制并粘贴文件。使用org.apache.commons.io.FileUtils,我尝试使用以下代码,
如果我从jsp调用sync()
,那么
... java.lang.StackOverflowError at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:]
private void sync() {
try {
FileUtils.copyFile(new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_src/compose.xml"),
new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_dest/compose.xml"));
}
catch (IOException e) {
e.printStackTrace();
}
}
如果我运行与独立java应用程序相同的代码,则会将文件复制并粘贴到目标
public static void main(String s[]) {
try {
FileUtils.copyFile(new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_src/compose.xml"),
new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_dest/compose.xml"));
}
catch (IOException e) {
e.printStackTrace();
}
}
为什么我在JBoss环境中调用代码时获取StackOverflowError,而执行与java应用程序相同的代码却成功运行?感谢。
答案 0 :(得分:3)
我猜测,因为您将文件复制到具有复制程序的WAR中,然后它会同步。然后将文件复制到正在复制它的WAR中,然后进行同步。然后将文件复制到正在复制它的WAR中,然后同步....
JBoss非常聪明,可以通过自动重新部署来重新加载WAR文件中已更改的代码。当您作为独立的Java应用程序运行时,没有容器,因此不会重新部署。
答案 1 :(得分:0)
我找到了解决此问题的方法。我的框架中的动作类配置(内部构建的框架)不正确,因此导致在循环中调用动作类。我更新了该设置,从而阻止了循环中的动作类执行。
这SO post也引导了我。