Skip to content

Instantly share code, notes, and snippets.

@seansummers
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seansummers/d930680baf1ed4ecc9e4 to your computer and use it in GitHub Desktop.
Save seansummers/d930680baf1ed4ecc9e4 to your computer and use it in GitHub Desktop.
Apache MINA jython tutorial time server
PORT = 9123
from org.apache import mina
from java import net, nio, util
class TimeServerHandler(mina.core.service.IoHandlerAdapter):
def exceptionCaught(self, session, cause):
cause.printStackTrace()
def messageSent(self, session, message):
print('Message written.... {}'.format(message))
def sessionClosed(self, session):
print('Session closed!')
session.service.dispose()
def sessionCreated(self,session):
''' runs in acceptor thread; keep it short! '''
print('Sesion created!')
def sessionOpened(self,session):
print('Sesion opened!')
def messageReceived(self, session, message):
if message.strip().lower() == 'quit':
session.close(True)
else:
date = util.Date()
session.write(str(date))
def sessionIdle(self, session, status):
print('IDLE {}'.format(session.getIdleCount(status)))
def run():
charset = nio.charset.Charset.forName('UTF-8')
codec = mina.filter.codec.textline.TextLineCodecFactory(charset)
codecFilter = mina.filter.codec.ProtocolCodecFilter(codec)
logger = mina.filter.logging.LoggingFilter()
acceptor = mina.transport.socket.nio.NioSocketAcceptor()
#acceptor = mina.transport.socket.nio.AprSocketAcceptor()
#acceptor = mina.transport.socket.nio.NioDatagramAcceptor()
acceptor.filterChain.addLast('logger', logger)
acceptor.filterChain.addLast('codec', codecFilter)
acceptor.handler = TimeServerHandler()
acceptor.sessionConfig.reuseAddress = True # for UDP/datagram only?
acceptor.sessionConfig.readBufferSize = 2048
acceptor.sessionConfig.setIdleTime( mina.core.session.IdleStatus.BOTH_IDLE, 10 )
acceptor.bind(net.InetSocketAddress(PORT))
if __name__=='__main__':
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment