* @return the server mina message gateway
*/
public static AbstractStampyMessageGateway initialize() {
StampyHeartbeatContainer heartbeatContainer = new HeartbeatContainer();
ServerNettyMessageGateway gateway = new ServerNettyMessageGateway();
gateway.setPort(1234);
gateway.setHeartbeat(1000);
gateway.setAutoShutdown(true);
gateway.addHandler(new SimpleChannelUpstreamHandler() {
public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
System.out.println("Session destroyed, exiting...");
System.exit(0);
}
});
ServerNettyChannelHandler channelHandler = new ServerNettyChannelHandler();
channelHandler.setGateway(gateway);
channelHandler.setHeartbeatContainer(heartbeatContainer);
gateway.addMessageListener(new IDontNeedSecurity());
gateway.addMessageListener(new ServerMessageValidationListener());
gateway.addMessageListener(new VersionListener());
NettyLoginMessageListener login = new NettyLoginMessageListener();
login.setGateway(gateway);
login.setLoginHandler(new SystemLoginHandler());
gateway.addMessageListener(login);
NettyConnectStateListener connect = new NettyConnectStateListener();
connect.setGateway(gateway);
gateway.addMessageListener(connect);
NettyHeartbeatListener heartbeat = new NettyHeartbeatListener();
heartbeat.setHeartbeatContainer(heartbeatContainer);
heartbeat.setGateway(gateway);
gateway.addMessageListener(heartbeat);
NettyTransactionListener transaction = new NettyTransactionListener();
transaction.setGateway(gateway);
gateway.addMessageListener(transaction);
SystemAcknowledgementHandler sys = new SystemAcknowledgementHandler();
NettyAcknowledgementListenerAndInterceptor acknowledgement = new NettyAcknowledgementListenerAndInterceptor();
acknowledgement.setHandler(sys);
acknowledgement.setGateway(gateway);
acknowledgement.setAckTimeoutMillis(200);
gateway.addMessageListener(acknowledgement);
gateway.addOutgoingMessageInterceptor(acknowledgement);
NettyReceiptListener receipt = new NettyReceiptListener();
receipt.setGateway(gateway);
gateway.addMessageListener(receipt);
NettyConnectResponseListener connectResponse = new NettyConnectResponseListener();
connectResponse.setGateway(gateway);
gateway.addMessageListener(connectResponse);
gateway.setHandler(channelHandler);
return gateway;
}