您的问题似乎是由于他们已在最新的 JasperReports 服务器版本 (4.5) 中修复的缺陷所致。 JasperReports Server 4.2 在 web.xml 中有一个 servlet 过滤器 (UploadMultipartFilter),它使用多部分请求,这会破坏 Axis(iReports 使用的 Web 服务库)。这会导致错误。
因此,要解决此问题,您可以升级到他们的 4.5 版本或对位于 <jasperserver[-pro] root>/WEB-INF/web.xml 中的配置文件进行以下修改并注释掉以下行:
<!--
<filter>
<filter-name>multiPartHelperFilter</filter-name>
<filter-class>com.jaspersoft.jasperserver.war.common.UploadMultipartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>multiPartHelperFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
通过在Filter和filter-mapping标签前后添加<!--和-->)
然后通过将过滤器添加到映射的链来编辑WEB-INF/applicationContext-security-web.xml:
...
/** = httpSessionContextIntegrationFilter, uploadMultipartFilter, ${bean.loggingFilter},
${bean.userPreferencesFilter}, ${bean.authenticationProcessingFilter},
${bean.userPreferencesFilter}, ${bean.basicProcessingFilter},
requestParameterAuthenticationFilter, JIAuthenticationSynchronizer,
anonymousProcessingFilter, exceptionTranslationFilter, filterInvocationInterceptor,
switchUserProcessingFilter, iPadSupportFilter
...
<bean id="uploadMultipartFilter" class="com.jaspersoft.jasperserver.war.common.UploadMultipartFilter"/>
通过在 URI /** 过滤器链的第二个位置添加“uploadMultipartFilter”(通常是 bean filterChainProxy 中的最后一个),并通过在 bean filterChainProxy 下方添加 id 为 uploadMultipartFilter 的 bean 来引用该新过滤器。