2016-09-12 11 views
-1

Java 6
jboss-as-7.1.1.FinalJava 6 - StackOverflowError при попытке скопировать и вставить файл

мне нужно скопировать и вставить файл. Использование org.apache.commons.io.FileUtils и я попытался с помощью следующего кода,

Если я призываю sync() из JSP, получая

... java.lang.StackOverflowError в org.apache .catalina.core.ApplicationHttpRequest.removeAttribute (ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:] на 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(); 
    } 
} 

Почему Я получаю StackOverflowError, когда код вызывается в среде JBoss, тогда как выполнение того же кода, что и приложение java, выполняется успешно? Благодарю.

+2

Можете ли вы объяснить, почему вы думаете, что StackOverflowError имеет отношение к логике копирования файлов в вашем методе 'sync()'? (Я спрашиваю, потому что, судя по тому, что вы выложили кусочек stacktrace, он выглядит так: * не *.) – ruakh

+2

Стекло показывает, что ошибка находится в совершенно другом месте. Это не имеет ничего общего с копией файла. – Andreas

+0

@ruakh and Andreas Спасибо за ваши комментарии, см. Мой ответ. – SyAu

ответ

0

Я нашел исправление этой проблемы. Конфигурация класса действий в моей структуре, которая представляет собой встроенную фреймворк, была неправильной, что привело к тому, что класс действия вызывается в цикле. Я обновил эту настройку, тем самым предотвращая выполнение класса действия в цикле.

Этот SO post также руководил мной.

3

Я предполагаю, что, поскольку вы копируете свой файл в WAR, у которого есть программа, которая копирует его, он затем синхронизируется. Затем копирует файл в WAR, который его копирует, а затем синхронизирует. Которая затем копирует файл в WAR, который его копирует, а затем синхронизирует ...

JBoss достаточно умен, чтобы попытаться перезагрузить код, который был изменен в файле WAR, путем автоматического развертывания. Когда вы работаете как автономное приложение Java, контейнера нет, поэтому он не передислоцируется.

+0

У меня есть веб-приложение в разобранном формате (папка - admin.war), у меня нет файла войны в папке развертывания. – SyAu

 Смежные вопросы

  • Нет связанных вопросов^_^