あなたは正しい方向に沿って考えています、それはただ詳細を具体化する必要があります。気を引き締めてください、私はたくさんの長いクラス名であなたを襲うつもりです...
リモートサービスと通信するスタブを生成するクライアント側のファクトリはです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
どこかの別のファクトリからの新しいインスタンスを取得すると、バイトカウントがユーザーインターフェイスに公開されます。