Software:Evocb
Initial release | 2011 |
---|---|
Written in | Java |
Type | Distributed development |
License | LGPL License |
Website | evocb |
EVO/CB is a distributed object system that is constructed on top of publish/subscribe event systems. This design decision implies modeling method calls as events and subscriptions over the underlying messaging middleware.
The current prototype is a free and open source software released under the terms of the LGPL License and written in Java.
Example
The following classes implement a simple client-server program using the Evo middleware that change a remote value.
Evo
class—Defines the interface that is used by the client and implemented by the server.
import evo.ERemote; import evo.annotation.*; import evo.exception.*; @RemoteInterface public interface Evo extends ERemote { @RemoteMethod public void setValue (String value) throws RemoteException; }
EvoImpl
and EvoServer
classes—Listens to Evo requests and implements the interface which is used by the client to invoke remote methods.
import evo.RemoteObject; import evo.exception.RemoteException; public class EvoImpl extends RemoteObject implements Evo { private String value = "sample"; public EvoImpl() {} public EvoImpl (Properties env) throws RemoteException { super (env); } public void setValue (String value) throws RemoteException { this.value = value; } }
import java.util.Properties; import evo.Naming; import evo.util.Environment; public class EvoServer { public static void main(String[] args) { try { Naming.startRegistry(); Properties env = Environment.getEnv(); Evo server = new EvoImpl(env); Naming.bind("evo://remote",server); System.in.read(); } catch (Exception e) { e.printStackTrace(); } } }
EvoClient
class—This is the client which gets the reference (a proxy) to the remote object and invokes its method to set a value.
import evo.Naming; public class EvoClient { public static void main(String[] args) throws Exception { Naming.loadRegistry(); Evo client = (Evo) Naming.lookup("evo://remote"); client.setValue("newValue"); client.close(); Naming.unloadRegistry(); } }
See also
- Remote method invocation
- Event-based systems
- Message-oriented middleware
- Publish/subscribe
External links