Soft Starters/Soft Starter/Motor Soft Starter/3 phase soft starter/motor ...
Server::Starter meets Java
-
Upload
tokuhiro-matsuno -
Category
Engineering
-
view
1.839 -
download
1
Transcript of Server::Starter meets Java
![Page 1: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/1.jpg)
Server::Starter meets Java
tokuhirom
![Page 2: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/2.jpg)
Sever::Starter
![Page 3: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/3.jpg)
a super daemon to hot-deploy server
programs
![Page 4: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/4.jpg)
Server::Starter(listen 80)
Server
socket
Serversocket
Ready!
Serversocket
Ready!
SIGHUPSIGHUP
![Page 5: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/5.jpg)
De facto standardfor Perl webapp
![Page 6: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/6.jpg)
I want to runJava web apps
on Server::Starter
![Page 7: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/7.jpg)
There is no fdopen() support on JVM
![Page 8: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/8.jpg)
Reflection?
![Page 9: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/9.jpg)
orz
![Page 10: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/10.jpg)
After half a year …
![Page 11: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/11.jpg)
System.inheritedChannel()
![Page 12: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/12.jpg)
JVM can use Inherited Socket
from parent process
![Page 13: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/13.jpg)
for inetd support…
![Page 14: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/14.jpg)
Behaviour:
if (isSocket(fd 0) {return it;}
![Page 15: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/15.jpg)
Hmm..
![Page 16: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/16.jpg)
If Server::Starter use always fd 0,
then it’s available.
![Page 17: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/17.jpg)
(Normally, Server::Starter uses any available port.
![Page 18: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/18.jpg)
DO IT
![Page 19: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/19.jpg)
—port=8080=0
8080: port0: file descriptor
![Page 20: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/20.jpg)
Pros
![Page 21: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/21.jpg)
Shutdown old process after new process is
listening
![Page 22: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/22.jpg)
You don’t need to care the ClassLoader related
issues, like resource leaks.
![Page 23: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/23.jpg)
Easy to upgradeJVM Version
![Page 24: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/24.jpg)
Cons
![Page 25: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/25.jpg)
Not works on OS X
![Page 26: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/26.jpg)
Demo
![Page 27: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/27.jpg)
https://github.com/tokuhirom/jetty-server_starter-sample
![Page 28: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/28.jpg)
New Issue
![Page 29: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/29.jpg)
—daemonizeclose STDIN;
![Page 30: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/30.jpg)
—stop—start
—restart
![Page 31: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/31.jpg)
start_server \$MODE \
…
![Page 32: Server::Starter meets Java](https://reader036.fdocuments.in/reader036/viewer/2022062420/55b6d3fdbb61eb86418b4851/html5/thumbnails/32.jpg)
Fin.