You don't have to put an XmlRpcBean annotation to every bean you like to transfer. XmlRpc-Delight can use any unknown type as XmlRpcBean by setting '''{{{XmlRpc.XmlRpc.treatUnknownTypesAsBeans( true );}}}''' Also you can pass null-values as method arguments by setting '''{{{XmlRpc.useAutomaticNullMasking( true );}}}''' __This has to be done on both server and client side.__ {{{ public interface Api { enum Size { tiny, medium, huge } class Bean { private Size size; private String[] content; public Size getSize() { return size; } public void setSize( Size size ) { this.size = size; } public String[] getContent() { return content; } public void setContent( String[] content ) { this.content = content; } @Override public String toString() { return "Bean(" + getSize() + "):" + Arrays.toString( getContent() ); } } void updateBean( Bean b ); } }}} {{{ ... //start server XmlRpc.treatUnknownTypesAsBeans( true ); XmlRpc.useAutomaticNullMasking( true ); StartXmlRpcServer.startXmlRpcServer( new ApiHandler() ); //create a (remote) client to the API Api api = createClient( Api.class ); //do some calls Api.Bean bean = new Api.Bean(); bean.setSize( Size.medium ); bean.setContent( new String[]{ "a", "b", "c" } ); api.updateBean( bean ); //also null values allowed Api.Bean bean2 = new Api.Bean(); bean2.setSize( Size.tiny ); bean2.setContent( null ); api.updateBean( bean2 ); ... }}} Examples in source code: [http://delight.opendfki.de/repos/trunk/delight-examples/src/main/java/de/dfki/util/xmlrpc/examples/no_annontations]