java stream 多次读取_java – 如何读取InputStream多次

我有这个代码:

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

logger.info("Filter start...");

HttpServletRequest httpRequest = (HttpServletRequest) request;

HttpServletResponse httpResponse = (HttpServletResponse) response;

String ba = getBaId(getBody(httpRequest));

if (ba == null) {

logger.error("Wrong XML");

httpResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);

} else {

if (!clients.containsKey(ba)) {

clients.put(ba, 1);

logger.info("Client map : init...");

} else {

clients.put(ba, clients.get(ba).intValue() + 1);

logger.info("Threads for " + ba + " = " + clients.get(ba).toString());

}

chain.doFilter(request, response);

}

}

并且这个web.xml(包被缩短,名称被更改,但它看起来一样)

TestFilter

pkg.TestFilter

TestFilter

/*

contextConfigLocation

WEB-INF/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

Name

Name

pkg.Name

1

Name

/services/*

我想在过滤器后调用Servlet。我希望chain.doFilter(…)可以做的伎俩,但我总是得到这个错误在chain.doFilter(…)的行:

java.lang.IllegalStateException: getInputStream() can't be called after getReader()

at com.caucho.server.connection.AbstractHttpRequest.getInputStream(AbstractHttpRequest.java:1933)

at org.apache.cxf.transport.http.AbstractHTTPDestination.setupMessage(AbstractHTTPDestination.java:249)

at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:82)

at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:283)

at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:166)

at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:174)

at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:152)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)

at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)

at pkg.TestFilter.doFilter(TestFilter.java:102)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)

at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)

at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)

at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)

at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)

at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)

at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)

at java.lang.Thread.run(Thread.java:619)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值