2012-02-23 87 views
1

我试图在JBOSS AS 7.1上使用JRuby 1.6.6部署Rails 3.2应用程序。我认为这几乎肯定是一个JBoss问题。在JBOSS AS 7.1上部署多部分表单参数时

该应用程序在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 %> 

一个原因,我怀疑它涉及到一些大小限制是,如果我尝试上传非常非常小的文件,它的工作原理。在这种情况下,文件被成功传递给控制器​​的参数散列。

任何帮助将不胜感激。

+0

我有与JBoss 5.1部署恰好相同的问题。 – arkadiy 2012-02-23 12:45:07

回答

0

我不知道这是否是解决方案,还是只是一个巧合,但我通过设置JAVAOPTS事后这个问题增加了堆的大小和PermGen的内存离开了。

的起作用的开关分别为:

JAVA_OPTS = -Xms512m -Xmx1024m -XX:PermSize =128米-XX:MaxPermSize参数=256米

1

下面是我如何解决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"到您的warble.rb配置的config.webinf_files部分。

例如:

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