【问题标题】:Glassfish Server Hell - GZip JSON - No Stacktrace PrintedGlassfish Server Hell - GZip JSON - 未打印 Stacktrace
【发布时间】:2014-03-11 16:51:30
【问题描述】:

我从不喜欢 Glassfish、Weblogic 等重量级服务器,但我必须通过 Glassfish 提供的 http 暴露一些端点来做一些实现。在一种特殊情况下,我必须向 Glassfish 服务器发送一个 Post 请求,该请求接受一个 GZipped 输入,将其解压缩并返回一个 GZipped 响应。这是我目前所拥有的:

在 Glassfish 服务器上:

@Path("/")
class MyService extends BaseService {

  @POST
  @Path("/myService")
  @Consumes(Array("application/json"))
  @Produces(Array("application/json"))
  @GZIP
  def myService(@GZIP json: String): Response = {
    println("Message received") // Not getting printed as well!!!
    Response.status(200).header("Content-Encoding", "gzip").entity(JsonMarshall.deserialize(json)).build()
  }
}

我正在使用 JBoss rest easy API 来公开 myService 端点。在我的客户端中,我设置了必要的标头(如下所示的 sn-p)

  post.addHeader("Content-Encoding", "gzip")
  post.addHeader("Accept-Encoding", "gzip, deflate")

但是当我运行我的客户端时,我看到的响应如下:

[main] INFO ServerPingTest - Calling URL http://localhost:8080/glassfish-server/myService
[main] INFO ServerPingTest - --- RESPONSE HEADERS ---
[main] INFO ServerPingTest - X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  4.0  Java/Oracle Corporation/1.7)
[main] INFO ServerPingTest - Server: GlassFish Server Open Source Edition  4.0 
[main] INFO ServerPingTest - Content-Language: 
[main] INFO ServerPingTest - Content-Type: text/html
[main] INFO ServerPingTest - Date: Tue, 11 Mar 2014 16:39:17 GMT
[main] INFO ServerPingTest - Content-Length: 1217
[main] ERROR ServerPingTest - Error occurred when ping testing !!!!! Please see the stacktrace below!
java.util.zip.ZipException: Not in GZIP format
    at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
    ......
    ......

这是我在服务器上看到的;

[#|2014-03-11T17:39:17.557+0100|SEVERE|glassfish 4.0||_ThreadID=21;_ThreadName=Thread-4;_TimeMillis=1394555957557;_LevelValue=1000;|
  [http-listener-1(3)] WARN org.jboss.resteasy.core.SynchronousDispatcher - Failed executing POST /myService|#]

我也没有看到任何堆栈跟踪。任何人都可以帮忙看看出了什么问题吗?

【问题讨论】:

    标签: glassfish resteasy


    【解决方案1】:

    看来我已经设法解决了这个问题。我做了以下事情:

    1. 使用最新版本的 rest easy API(版本 3.0.6.Final)而不是使用旧版本 2.2.1(请参阅此帖子 http://sourceforge.net/p/resteasy/mailman/resteasy-developers/thread/BDED22DA-ACDC-47F5-9B14-30A202B52981@redhat.com/

    2. 我在客户端上添加了一个额外的标头 (post.addHeader("Content-Type", "application/json"))

    成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多