您正在思考沿着正確的路線,它只需要充實具體細節。支持你自己,我打算用一堆長類名打你......
生成與遠程服務對話的存根的客戶端工廠是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
的新實例,然後將字節數暴露給您的用戶界面。
你想在客戶端或服務器上做到這一點嗎? – skaffman 2010-03-22 20:23:49
我想在客戶端上做到這一點理想,但我想客戶端或服務器將工作。我主要感興趣的是看到請求後從服務器返回的總流量 - 如果服務器端比客戶端更容易執行操作,那我也沒問題。 – aarestad 2010-03-22 20:38:12