32
Server::Starter meets Java tokuhirom

Server::Starter meets Java

Embed Size (px)

Citation preview

Page 1: Server::Starter meets Java

Server::Starter meets Java

tokuhirom

Page 2: Server::Starter meets Java

Sever::Starter

Page 3: Server::Starter meets Java

a super daemon to hot-deploy server

programs

Page 4: Server::Starter meets Java

Server::Starter(listen 80)

Server

socket

Serversocket

Ready!

Serversocket

Ready!

SIGHUPSIGHUP

Page 5: Server::Starter meets Java

De facto standardfor Perl webapp

Page 6: Server::Starter meets Java

I want to runJava web apps

on Server::Starter

Page 7: Server::Starter meets Java

There is no fdopen() support on JVM

Page 8: Server::Starter meets Java

Reflection?

Page 9: Server::Starter meets Java

orz

Page 10: Server::Starter meets Java

After half a year …

Page 11: Server::Starter meets Java

System.inheritedChannel()

Page 12: Server::Starter meets Java

JVM can use Inherited Socket

from parent process

Page 13: Server::Starter meets Java

for inetd support…

Page 14: Server::Starter meets Java

Behaviour:

if (isSocket(fd 0) {return it;}

Page 15: Server::Starter meets Java

Hmm..

Page 16: Server::Starter meets Java

If Server::Starter use always fd 0,

then it’s available.

Page 17: Server::Starter meets Java

(Normally, Server::Starter uses any available port.

Page 18: Server::Starter meets Java

DO IT

Page 19: Server::Starter meets Java

—port=8080=0

8080: port0: file descriptor

Page 20: Server::Starter meets Java

Pros

Page 21: Server::Starter meets Java

Shutdown old process after new process is

listening

Page 22: Server::Starter meets Java

You don’t need to care the ClassLoader related

issues, like resource leaks.

Page 23: Server::Starter meets Java

Easy to upgradeJVM Version

Page 24: Server::Starter meets Java

Cons

Page 25: Server::Starter meets Java

Not works on OS X

Page 26: Server::Starter meets Java

Demo

Page 27: Server::Starter meets Java

https://github.com/tokuhirom/jetty-server_starter-sample

Page 28: Server::Starter meets Java

New Issue

Page 29: Server::Starter meets Java

—daemonizeclose STDIN;

Page 30: Server::Starter meets Java

—stop—start

—restart

Page 31: Server::Starter meets Java

start_server \$MODE \

Page 32: Server::Starter meets Java

Fin.