1 55 package org.lateralnz.messaging.lrmp; 56 57 import java.util.Map ; 58 import java.util.HashMap ; 59 import java.util.ResourceBundle ; 60 61 import org.apache.log4j.Logger; 62 63 import org.lateralnz.common.util.ResourceUtils; 64 import org.lateralnz.common.util.StringUtils; 65 import org.lateralnz.messaging.Message; 66 import org.lateralnz.messaging.MessageHandler; 67 import org.lateralnz.messaging.MessageListener; 68 69 75 public class LRMPMessageHandlerFactory { 76 private static final Logger log = Logger.getLogger(LRMPMessageHandlerFactory.class.getName()); 77 private static LRMPMessageHandlerFactory obj = new LRMPMessageHandlerFactory(); 78 private static ResourceBundle resources = ResourceUtils.getStaticBundle(LRMPMessageHandlerFactory.class); 79 80 private String defaultAddress = null; 81 private int defaultPort = 5555; 82 83 private Map handlers = new HashMap (); 84 85 private LRMPMessageHandlerFactory() { 86 } 87 88 public static final LRMPMessageHandlerFactory getInstance() { 89 return obj; 90 } 91 92 95 public MessageHandler getHandler(String ipaddress, int port) throws Exception { 96 String key = ipaddress + port; 97 if (!handlers.containsKey(key)) { 98 synchronized (handlers) { 99 if (!handlers.containsKey(key)) { 100 handlers.put(key, new LRMPMessageHandler(ipaddress, port)); 101 } 102 } 103 } 104 return (MessageHandler)handlers.get(key); 105 } 106 107 110 public MessageHandler getDefaultHandler() throws Exception { 111 if (StringUtils.isEmpty(defaultAddress)) { 112 defaultAddress = resources.getString("default_address"); 113 defaultPort = Integer.parseInt(resources.getString("default_port")); 114 } 115 return getHandler(defaultAddress, defaultPort); 116 } 117 118 119 public static final void main(String [] args ) { 121 try { 122 MessageHandler nh = LRMPMessageHandlerFactory.getInstance().getDefaultHandler(); 123 124 MessageListener nl1 = new MessageListener() { 125 public void handle(Message event) { 126 System.out.println("received " + event); 127 } 128 }; 129 130 nh.addListener("test", nl1); 131 132 Thread.sleep(1000); 133 if (args.length > 0) { 134 for (int i = 0; i < 1000; i++) { 135 nh.send(new Message(1, "test", "hello" + i)); 136 } 137 } 138 } 139 catch (Exception e) { 140 e.printStackTrace(); 141 } 142 } 143 } 144 | Popular Tags |