Параметры формы, состоящей из нескольких частей, не попадают в контроллер при развертывании на JBOSS AS 7.1

Я пытаюсь развернуть приложение 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.

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


person Alex Blakemore    schedule 23.02.2012    source источник
comment
У меня точно такая же проблема с развертыванием JBoss 5.1.   -  person arkadiy kraportov    schedule 23.02.2012


Ответы (2)


Вот как я решил эту проблему для 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.

Например:

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

person arkadiy kraportov    schedule 07.03.2012

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

Переключатели, которые работали, были:

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

person Alex Blakemore    schedule 14.03.2012