Генерация * .WAR (64 бит х 32 бит) - PullRequest
2 голосов
/ 21 января 2010

Есть ли какая-либо разница при создании файла * .war с использованием 64-битной виртуальной машины, а не 32-битной?

У меня возникла проблема после развертывания приложения с использованием нового ноутбука, который я недавно купил - Windows 7 и 64-битный процессор AMD. Я не трогал ни один исходный код приложения, но при создании * .war через Eclipse / Galileo и последующем развертывании его на сервере у меня возникает исключение «Permgen Space» во время выполнения всякий раз, когда я пытаюсь показать какой-либо report - встроенный в Jasper Report - на стороне сервера все они локально, а также старый файл * .war, сгенерированный на моем старом компьютере (32 бита) 1, работают нормально.

После некоторых подробностей о коробках:

Локально:

  • Java 1.6.0_18 (64 бита)
  • Apache Tomcat / 6.0.20

Серверная часть:

  • Java 1.6.0_07 (32 бита)
  • Apache Tomcat / 6.0.20

Здесь вы можете увидеть зарегистрированное исключение:

javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:295)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
br.com.innosoft.jzytho.framework.struts.action.AcessoAction.processActionPerform(AcessoAction.java:166)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

Дайте мне знать, если вам нужна дополнительная информация.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Обычно: Нет.

Я использую те же самые сценарии для создания войн для наших приложений в dev и production. Все производственные серверы теперь 64-битные, но были в прошлом 32-битные. Некоторые устройства разработки являются 64-битными, некоторые 32-битными, но все используют один и тот же механизм для упаковочных войн.

Пространство пермгена - это проблема памяти, связанная с доступной памятью и метаданными класса, которая равна , на которую влияет архитектура процессора / операционной системы.

вот обсуждение этого: Объяснение ошибки java.lang.OutOfMemoryError: PermGen space

Короткий ответ - добавить параметр запуска jvm -XX: PermSize = 64m или --XX: PermSize = 128m при запуске jvm на 32-битной платформе.

1 голос
/ 21 января 2010

Нет разницы, если вы генерируете файл WAR, используя 64-битную виртуальную машину или 32-битную. WAR - это в основном формат файла ZIP. Формат файла не меняется с виртуальной машиной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...