Параметры формы из нескольких частей не попадают в контроллер при развертывании на JBOSS AS 7.1 - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь развернуть приложение Rails 3.2 на JBOSS AS 7.1, используя JRuby 1.6.6.Я думаю, что это почти наверняка проблема JBoss.

Приложение отлично работает под Tomcat и под WebBrick, но не JBoss.При развертывании в JBoss параметры, отправленные с использованием многочастных форм, удаляются до того, как запрос поступит в контроллер.Я подозреваю, что есть некоторые настройки конфигурации JBOSS, необходимые для загрузки больших пакетов HTTP, но я не могу понять, где или что установить в JBOSS AS 7.1 для этого.

Не думаю, что проблема вв коде контроллера Rails, но самый простой способ увидеть проблему - это посмотреть комментарии в этом блоке кода.

def create
  f = params[:uploaded_file]
  # ** Under JBOSS, there is no :uploaded_file in the params hash!
  # ** Without JBOSS, :uploaded_file is passed in, all is good
  data = f.read
  # ...
end

Шаблон ERB выглядит примерно так:

<%= form_tag xxx_path, :multipart => true do %>
<%= file_field_tag :uploaded_file, :required => true %>
<% end %>

Я подозреваю, что это связано с некоторым ограничением размера: если я пытаюсь загружать очень маленькие файлы, это работает.В этом случае файл успешно передается контроллеру в хэше params.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вот как я исправил эту проблему для JBoss 5.1.

  • Добавьте файл components.xml в корневой каталог вашего проекта rails. Вот содержимое этого файла:
    <?xml version="1.0" encoding="UTF-8"?>
    <components xmlns="http://jboss.com/products/seam/components"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:security="http://jboss.com/products/seam/security"
                xsi:schemaLocation= "http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd
                   http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd">

      <component class="org.jboss.seam.web.MultipartFilter">
        <property name="createTempFiles">true</property>
        <property name="max-request-size">0</property>
      </component>
    </components>
  • Добавьте "components.xml" в config.webinf_files раздел вашей warble.rb конфигурации.

Например:

config.webinf_files += FileList["jboss-web.xml", "components.xml"]

0 голосов
/ 14 марта 2012

Я не уверен, является ли это решением или просто совпадением, но я увеличил размер кучи и память PermGen, установив JAVAOPTS, и после этого эта проблема исчезла.

Сработали следующие переключатели:

JAVA_OPTS = -Xms512m -Xmx1024m -XX: PermSize = 128 м -XX: MaxPermSize = 256 м

...