【问题标题】:Struts2 + GlassFish + Apache File uploadStruts2 + GlassFish + Apache 文件上传
【发布时间】:2012-12-09 06:12:33
【问题描述】:

我正在使用 Struts 2 在 glassfish 中运行 Web 应用程序。 我的 web.xml 文件有以下过滤器:

StrutsPrepareFilter, SiteMeshFilter, StrutsExecuteFilter

效果很好。

问题是我有一个文件上传。出于某种原因,它可以在 Tomcat 上运行,但在 GlassFish 上,该文件在操作中为空。

如果我将过滤器更改为:

ActionContextCleanUp, SiteMeshFilter, FilterDispatcher

它有效。事实上,ActionContextCleanUpFilterDispatcher 已被弃用。

所以我有两个问题: 有谁知道 glassfish 文件上传有什么问题?

我正在尝试调试过滤器以查看文件丢失的位置,但我不知道过滤器中的参数在哪里。 过滤器收到一个没有参数的 httpservletrequest,即使在 tomcat 上也是如此。

过滤器上提交的参数在哪里?

我创建了一个发生相同问题的测试项目。 文件上传到临时文件夹然后丢失。

这里是 web.xml:

    <welcome-file-list>
        <welcome-file>upload.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>exec</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>exec</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

如果我分别使用准备和执行过滤器,也会发生同样的情况。

【问题讨论】:

标签: struts2 glassfish web.xml sitemesh apache-commons-fileupload


【解决方案1】:

问题解决了。 linux 上的 glassfish 权限存在问题。 我曾使用 eclipse 插件安装 glassfish。 通过以 root 身份手动安装 glassfish,然后在 eclipse 中添加服务器解决了这个问题。

【讨论】:

    【解决方案2】:

    嗯,那是当时的一种方式,但我遇到了同样的问题,这次许可没有解决。所以在寻找这个的过程中,我终于找到了真正的解决方案。

    问题出在 Glassfish v3 中,必须更换 web-core.jar。正确的 jar 和更多信息可以在here 找到。

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多