Since adding dynamic proxies to the JDK and dynamic RMI-IIOP (2006), modern application servers have not required the ancient concept of manually creating cigarette butts (not to mention the even older concept of skeletons).
eg. at least JBoss AS 4.x +, Glassfish, and partly WebSphere 7 all you need to include in client banks are interfaces. Nothing more is needed. (Unfortunately, for some unknown reason, WebSphere partially implements this relatively simple function, so if you use WebSphere and have a Java SE client, I feel your pain)
Btw, also note that the proxy server that you retrieve from the remote server can be directly passed to the interface. No PortableRemoteObject (another ancient one) or something like that.
source share