0

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

StrutsPrepareFilter, SiteMeshFilter, StrutsExecuteFilter

它工作正常。

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

如果我将过滤器更改为:

ActionContextCleanUp, SiteMeshFilter, FilterDispatcher

有用。事实是,ActionContextCleanUp并且FilterDispatcher已被弃用。

所以我有两个问题:有谁知道 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>

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

4

2 回答 2

0

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

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

于 2013-12-20T13:12:50.717 回答
0

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

于 2012-12-27T14:38:24.917 回答