| # 25. Messaging In client/server mode the TCP connection between the client and the server can also be used to send messages from the client to the server. Possible usecases could be: - shutting down and restarting the server - triggering server backup - using a customized login strategy to restrict the number of allowed client connections Here is some example code how this can be done. First we need to decide on a class that we want to use as the message. Any object that is storable in db4o can be used as a message, but strings and other simple types will not be carried (as they are not storable in db4o on their own). Let's create a dedicated class:
`class MyClientServerMessage { private String info; public MyClientServerMessage(String info){ this.info = info; } public Strint toString(){ return "MyClientServerMessage: " + info; } }`
Now we have to add some code to the server to react to arriving messages. This can be done by configuring a MessageRecipient object on the server. Let's simply print out all objects that arrive as messages. For the following we assume that we already have an ObjectServer object, opened with Db4o.openServer() .
`objectServer.ext().configure().setMessageRecipient( new MessageRecipient() { public void processMessage( ObjectContainer objectContainer, Object message) { // message objects will arrive in this code block System.out.println(message); } });`
Here is what we would do on the client to send the message:
`MessageSender sender = clientObjectContainer.ext().configure().getMessageSender(); sender.send(new MyClientServerMessage("Hello from client.");`
The MessageSender object on the client can be reused to send multiple messages. -- generated by Doctor courtesy of db4objects Inc.