Wildfly 9:通过编程[max-post-size]而不是修改standalone.xml来设置Undertow

Posted

技术标签:

【中文标题】Wildfly 9:通过编程[max-post-size]而不是修改standalone.xml来设置Undertow【英文标题】:Wildfly 9: Undertow setup by programming [max-post-size] rather than modifying standalone.xml 【发布时间】:2017-01-14 08:37:17 【问题描述】:

我需要增加我的 undertow 配置的 max-post-size,因为我遇到了以下异常

java.io.IOException: UT000020: Connection terminated as request was larger than 10485760 
at io.undertow.conduits.FixedLengthStreamSourceConduit.checkMaxSize(FixedLengthStreamSourceConduit.java:168) 

而且我需要更大负载的发布请求。

但是,我知道我可以适应 standalone.xml,但我无法成功地弄清楚如何通过编程或至少在 web.xml 中做到这一点(我需要能够将更改放入构建工件而不是在服务器配置中)。

编辑: 我将 post 请求与 jax-rs @Post 方法一起使用。如果有可能,例如注释每个请求的有效负载大小,这也可以,因为只有少数请求需要启用更高的有效负载大小。

谁能指出我能做什么? 提前致谢!

【问题讨论】:

I need to be able to put the change in the build artifact rather than in the server configuration) - 为什么?您可以使用 jboss-cli 工具编写此更改的脚本。 因为这是处理托管在云中的便携式应用程序的首选方式。这是一个重要的“最佳实践”。 我很想知道你在哪里听到的。您如何部署应用程序? 您也可以考虑为此目的使用 WildFly Swarm。这会将您的应用程序、您使用的 WIldFly 位及其配置捆绑到一个可执行的 jar 文件中。 @Steve C:你跑题了。这个问题很清楚并且有道理。我需要这种情况的解决方案,如果有的话;没有别的。 【参考方案1】:

我认为注释不可能。您必须更改listener 上的max-post-size 属性。对侦听器的更改需要重新加载,这就是为什么无法通过注释进行更改的原因。

在默认的http-listener 上使用 CLI,命令将是:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size, value=20971520)

【讨论】:

有没有办法在web.xml中设置servlet的监听器?我发现的是如何设置多部分主体的大小等,但不是最大后尺寸。 我不知道,因为它是 JAX-RS。如果它是一个 servlet,您可以使用 javax.servlet.annotation.MultipartConfig 注释。尽管***.com/a/20883976,也许这样的事情会起作用。【参考方案2】:

打开管理控制台 点击配置 点击子系统 点击 web/http-undertow 点击http HTTP-server-> defual-server 编辑最大帖子大小

【讨论】:

问题是如何通过编程来做到这一点,而不是通过设置 Wildfly 特定的配置。 -1

以上是关于Wildfly 9:通过编程[max-post-size]而不是修改standalone.xml来设置Undertow的主要内容,如果未能解决你的问题,请参考以下文章

WildFly 迁移、ejb 问题(8.1.0.Final 到 9.0.1.Final)

Wildfly 9 上的部署失败

Wildfly 9 http 转 https

在wildfly中获得球衣异常9

如何忽略/升级 JBoss Wildfly 9 中的模块?

Wildfly 9.0.2-Struts 1.x 的最终 ClassNotFoundException