A short example, how you can invoke a remote service with the PicoContainer with a XML-RPC service provider. First you register a CrispyComponentAdapterFactory and a ClassPropertiesLoader by the DefaultPicoContainer . Than you generate a proxy service object. With this this proxy, you can work how a local java object.
MiniXmlRpcServer server = new MiniXmlRpcServer(); try { // add the service to the server server.addService(Echo.class.getName(), EchoImpl.class.getName()); // start the server server.start(); // first example // register the CrispyComponentAdapterFactory and a PropertiesLoader DefaultPicoContainer pico = new DefaultPicoContainer(new CrispyComponentAdapterFactory()); pico.registerComponentImplementation(new ClassPropertiesLoader(PropertiesLoaderTest.class, "test-xml-rpc2.properties"), PropertiesLoader.class); // register the service interface pico.registerComponentImplementation(Echo.class); // get a proxy object from the service interface Echo echo = (Echo) pico.getComponentInstance(Echo.class); System.out.println("Echo: " + echo.echo("Hello Girl!")); // second example DefaultPicoContainer pico2 = new DefaultPicoContainer(); pico2.registerComponentImplementation(ClassPropertiesLoader.class, ClassPropertiesLoader.class, new Parameter[] { new ConstantParameter(PropertiesLoaderTest.class), new ConstantParameter("test-xml-rpc2.properties") } ); pico2.registerComponentImplementation(ServiceManager.class); Echo echo2 = (Echo) pico2.getComponentInstance(Echo.class); System.out.println("Echo: " + echo2.echo("Hello Boy!")); } catch (Exception e) { e.printStackTrace(); } finally { server.stop(); }