获取Spring文件上载的异常

时间:2010-02-04 10:32:26

标签: java spring tomcat servlets

我在使用spring文件上传功能上传文件时遇到了Exception。

尝试上传291 KB jpg文件。

对于低于50 kb的文件,它可以正常工作。以下是bean条目

<bean id="fileUploadController" class="com.businesscaliber.controller.FileUploadController">
        <property name="commandClass" value="com.businesscaliber.bean.FileUploadBean"/>
        <property name="formView" value="admin.do"/>
        <property name="successView" value="admin.do"/>
    </bean>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="100000"/>
    </bean> 

请帮忙

您好我更新了spring 2.5 jar

之后得到同样的错误

11:45:29,562 INFO  [STDOUT] 147375 [http-localhost%2F127.0.0.1-9090-3] ERROR org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/businesscaliber].[businesscaliber]  - Servlet.service() for servlet businesscaliber threw exception
javax.servlet.ServletException: Circular view path [exceptionController.do]: would dispatch back to the current handler URL [/businesscaliber/exceptionController.do] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

使用Spring 2.0 jar的初级异常

 1782687 [http-localhost%2F127.0.0.1-9090-3] ERROR org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/businesscaliber].[businesscaliber]  - Servlet.service() for servlet businesscaliber threw exception
java.lang.StackOverflowError
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:215)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)    2010-02-04 16:43:31,406 INFO  [STDOUT] a:544)

1 个答案:

答案 0 :(得分:2)

显示StackOverflowError上带有递归调用的跟踪的getSession()是可以识别的,因为请求被错误地通过servlet或过滤器调度,而servlet或过滤器之前已在请求链中调用过,这导致了它一次又一次地呼唤着自己。

实际上,我没有看到这与上传文件有什么关系,也许Spring文件上传功能是在内部将请求转发给某些特殊的servlet或过滤器,巧合的也是由同一个url-pattern覆盖的原始请求,因此事先已被调用。

至少,您现在知道在哪里查看特定问题。 servlet或过滤器映射中存在歧义和递归。