When using Spring Remoting it will create proxies for the remote beans. This is to hide the complexity of the used technology. So in your case it will construct a proxy which implements the StorageManager
interface and as such it will create a proxy implementing that interface.
Now that not only goes for Spring Remoting but basically for Spring AOP as well, AOP is applied with proxies (as explained in the reference guide). So I suspect that you have transactions around your StorageManagerBean
which, by default, leads to a JDK Dynamic proxy. This proxy is, again, interface based.
In short inject a StoreManager
instance instead of a StoreManagerBean
instance.