java - Jersey-Server 响应未能发送字节 []

标签 java rest jakarta-ee jersey socketexception

我想发送 byte[] 到 Jersey 客户端。这是我的方法。

@POST
@Path("/userinfo/")
@Produces({ MediaType.APPLICATION_OCTET_STREAM })
public Response getResponse(String userID) {

    byte[] val=null;
    Response rezponse=null;
    try {
      val=getResponse(userID);//this returns a valid byte []         
        System.out.println("arry len : "+val.length);        
      rezponse=Response.ok(val).build();
      System.out.println("before response is null : "+(rezponse==null));
    } catch (Exception e) {
        e.printStackTrace();
        return Response.status(Status.INTERNAL_SERVER_ERROR).build();
    }
    return rezponse;
}

try block 最后一行的系统输出表明 rezponse 对象不为 null,返回的字节数组有数据。然而,这会引发如下异常。

 SEVERE: An I/O error has occurred while writing a response message entity to the container output stream.
org.glassfish.jersey.server.internal.process.MappableException: ClientAbortException:  java.net.SocketException: Connection reset
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:96)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139)
    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:574)
    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:381)
...

这是我的客户请求。

Client client = ClientBuilder.newClient();
WebTarget target = client.target(SERVER_URL);// String:SERVER_URL referes to the path
WebTarget getDomainPath = target.path("userinfo");
Builder getBuilder=getDomainPath.request();
Response response = getBuilder.post(Entity.entity("USER_005",MediaType.APPLICATION_OCTET_STREAM));
byte[] ins = (byte[]) response.getEntity();

我该如何解决这个问题?

最佳答案

看起来您的客户端在实际读取来自服务器的响应之前关闭了套接字

关于java - Jersey-Server 响应未能发送字节 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012617/

相关文章:

java - 如何使用多部分/表单数据?

java - R 无法解析为变量 : Chromecast example

java - 如何刷新我的 JLabel 图标?

java - [Java][Jboss]classToLaunch 不能为空

java - Eclipse 创建 .gitignore 文件和开放资源不起作用

spring - 使用 jersey 2 和 Spring 编写 "clean"集成测试 - REST

java - 使用 HTML5 文件 API 将文件上传到 RESTful Web 服务

php - 任何类似于 Recess 的 PHP Rest 框架?

java - 您如何从 servlet 内省(introspection) web.xml?

jsf - 用于登录和购物车以及更改模板的 EJB3 有状态 session bean