gpt4 book ai didi

java - 如何从 Spring 2.5 HTTP 远程处理调用中获取响应的大小?

转载 作者:可可西里 更新时间:2023-11-01 16:12:11 26 4
gpt4 key购买 nike

我一直在探索 Spring 2.5 中的 org.springframework.remoting.httpinvoker 包,试图找到一种方法来了解响应的大小,但我一直在兜圈子.

通过我在这里看到的另一个问题,我想我想做的是获取代表服务器响应的 InputStream 的句柄,然后用 Apache commons-io 计数输入流。执行此操作的最佳方法是什么?

目前,我很乐意只打印对 stdout 的响应大小,但最终我想将它存储在我的应用程序中一个众所周知的位置以供可选显示。

最佳答案

您的思路是对的,只是需要具体化。振作起来,我要用一堆长长的类名来打你......

生成与远程服务对话的 stub 的客户端工厂是 HttpInvokerProxyFactoryBean。父类(super class) (HttpInvokerClientInterceptor) 有一个名为 httpInvokerRequestExecutor 的属性,它默认为 SimpleHttpInvokerRequestExecutor 的一个实例。

子类化和扩展的时机已经成熟;具体来说,它有一个 decorateInputStream 方法,您可以使用它:

public class CountingHttpInvokerRequestExecutor extends SimpleHttpInvokerRequestExecutor {
@Override
protected InputStream decorateInputStream(InputStream is) throws IOException {
return new CountingInputStream(super.decorateInputStream(is));
}
}

然后将其注入(inject)代理工厂:

<bean class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="httpInvokerRequestExecutor">
<bean class="com.mycompany.CountingHttpInvokerRequestExecutor"/>
</property>
<!-- Plus the various other properties required by HttpInvokerProxyFactoryBean -->
<!-- URL, proxy interface, etc -->
</bean>

然后技巧就变成了掌握该信息,这将需要一些创造性的重新布线。例如,您可以从某个地方的另一个工厂获取 CountingInputStream 的新实例,然后将字节数暴露给您的用户界面。

关于java - 如何从 Spring 2.5 HTTP 远程处理调用中获取响应的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com