我一直在搜寻Spring 2.5中的org.springframework.remoting.httpinvoker软件包,试图找到一种方法来获得对响应大小的可见性,但是我一直在绕圈.
通过在这里看到的另一个问题,我认为我想做的是在InputStream上获取一个表示服务器响应的句柄,然后将其包装为Apache commons-io CountingInputStream.这样做的最佳方法是什么?
目前,我只希望打印对stdout的响应的大小就满意了,但是最终我希望将其存储在我的应用程序中的知名位置以进行可选显示.
最佳答案
您正在按照正确的思路思考,只需要充实细节即可.振作起来,我要用一堆长长的班级名字打你…
生成与远程服务对话的存根的客户端工厂是httpinvokerProxyfactorybean.超类(httpinvokerClientInterceptor)具有一个名为httpinvokerRequestExecutor的属性,该属性默认为SimplehttpinvokerRequestExecutor的实例.
进行子类化和扩展的时机已经成熟.特别是它具有decorateInputStream方法,可以使用:
public class CountinghttpinvokerRequestExecutor extends SimplehttpinvokerRequestExecutor {
@Override
protected InputStream decorateInputStream(InputStream is) throws IOException {
return new CountingInputStream(super.decorateInputStream(is));
}
}
然后将其注入代理工厂:
<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的新实例,然后将字节数公开给您的用户界面.
原文地址:https://www.jb51.cc/spring/531654.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。