我正在处理的应用程序有一个Rest Web服务,它需要一个带有效负载的GET请求。我知道它不是要走的路,但为了向后兼容,我们必须至少保持一段时间。这在Glassfish 3中运行良好,但现在我们要升级到Glassfish 4,在这里返回400 Bad Request。 在Glassfish 4源代码中查看,我发现了这个标志:
// flag, which enables/disables payload support for HTTP methods,
// for which HTTP spec doesn't clearly state whether they support payload.
// Known "undefined" methods are: GET, HEAD, DELETE
org.glassfish.grizzly.http.HttpServerFilter#allowPayloadForUndefinedHttpMethods
默认情况下为false,这就是返回400响应的原因。此标志似乎仅在基于服务器配置的波纹管方法中填充:
org.glassfish.grizzly.http.server.HttpServer#configureListener {
....
httpServerCodecFilter.setAllowPayloadForUndefinedHttpMethods(
serverConfig.isAllowPayloadForUndefinedHttpMethods());
....
}
这里的serverConfig
是一个最终属性,有一个公共吸气剂但是没有让我到任何地方。
毕竟我的问题是:有没有办法以编程方式(我怀疑它)或从管理GUI设置该标志为真?有没有其他方法可以在Glassfish 4中使用它?
由于
答案 0 :(得分:1)
对于行为之王存在一个问题,你可以看到{glass} 4.1.1。开发人员在服务器配置中添加了元素http的新属性。
答案 1 :(得分:0)
虽然这是线程超级老,但我只是遇到了这个坏男孩。我知道主题是4.1.1,但这个特殊属性适用于Embedded Glassfish 5:
gp.setProperty("embedded-glassfish-config.server.network-config.protocols.protocol.http-listener.http.allow-payload-for-undefined-http-methods", allowPayloadOnAllMethods);