jruby-rack-jetty 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,80 @@
1
+ require 'jetty.jar'
2
+ require 'jetty-plus.jar'
3
+ require 'jetty-util.jar'
4
+ require 'jetty-management.jar'
5
+ require 'servlet-api.jar'
6
+ require 'rack'
7
+ require 'jruby-rack'
8
+ require 'rack/handler/servlet'
9
+ require 'rack/handler/jetty/log_adapter'
10
+
11
+ class Rack::Handler::Jetty < Rack::Handler::Servlet
12
+
13
+ DEFAULT_MAX_THREADS = 1000
14
+
15
+ def self.run(app, options)
16
+
17
+ if options.fetch(:replace_jetty_logger, true)
18
+ # We want to set the logger ASAP to get rid of stderr logging that comes out
19
+ @logger = Rack::Handler::JettyLogAdapter.new(options[:logger], options[:log_prefix] ||
20
+ 'JETTY: ')
21
+ org.mortbay.log.Log.setLog(@logger)
22
+ end
23
+
24
+ jetty = org.mortbay.jetty.Server.new options[:Port]
25
+
26
+ if options.fetch(:with_jmx, true)
27
+ m_bean_server = java.lang.management.ManagementFactory.getPlatformMBeanServer
28
+ container = org.mortbay.management.MBeanContainer.new(m_bean_server)
29
+ jetty.container.add_event_listener(container)
30
+ container.start
31
+ end
32
+
33
+ max_threads = options[:max_threads] || DEFAULT_MAX_THREADS
34
+ thread_pool = org.mortbay.thread.QueuedThreadPool.new(max_threads)
35
+ thread_pool.setName("http")
36
+ log("created thread pool #{thread_pool} with #{max_threads} max threads")
37
+ jetty.setThreadPool(thread_pool)
38
+
39
+
40
+ context_path = options[:context_path] || "/"
41
+ context = org.mortbay.jetty.servlet.Context.new(nil, context_path,
42
+ org.mortbay.jetty.servlet.Context::NO_SESSIONS)
43
+
44
+ servlet_pattern = options[:servlet_pattern] || "/*"
45
+
46
+ # The filter acts as the entry point in to the application
47
+ context.add_filter(
48
+ filter_holder(app),
49
+ servlet_pattern,
50
+ org.mortbay.jetty.Handler::ALL)
51
+
52
+ # FIXME Umm, this might be wrong
53
+ context.set_resource_base(File.dirname(__FILE__))
54
+
55
+ # if we don't have at least one servlet, the filter gets nothing
56
+ context.add_servlet(org.mortbay.jetty.servlet.ServletHolder.new(
57
+ org.mortbay.jetty.servlet.DefaultServlet.new), servlet_pattern)
58
+
59
+ jetty.set_handler(context)
60
+ jetty.start
61
+ jetty.join
62
+ end
63
+
64
+ def self.log(msg)
65
+ @logger && @logger.info(msg)
66
+ end
67
+
68
+ def self.filter_holder(app)
69
+ context = org.jruby.rack.embed.Context.new("Jetty")
70
+ dispatcher =
71
+ org.jruby.rack.embed.Dispatcher.new(context, self.new(app))
72
+
73
+ filter = org.jruby.rack.embed.Filter.new(dispatcher, context)
74
+
75
+ org.mortbay.jetty.servlet.FilterHolder.new(filter)
76
+ end
77
+
78
+ end
79
+
80
+ Rack::Handler.register('jetty', 'Rack::Handler::Jetty')
@@ -0,0 +1,49 @@
1
+ require 'jetty'
2
+ require 'logger'
3
+
4
+ class Rack::Handler::JettyLogAdapter
5
+
6
+ include_class 'org.mortbay.log.Logger'
7
+ include org.mortbay.log.Logger
8
+
9
+ attr_reader :logger
10
+
11
+ def initialize(l=nil, prefix='')
12
+ @logger = l || ::Logger.new(STDOUT)
13
+ @prefix = prefix
14
+ end
15
+
16
+ def is_debug_enabled
17
+ logger.debug?
18
+ end
19
+
20
+ def set_debug_enabled
21
+ logger.warn("can't change logging status")
22
+ end
23
+
24
+ def warn(msg, *args)
25
+ logger.warn(@prefix + sub(msg, args))
26
+ end
27
+
28
+ def info(msg, *args)
29
+ logger.info(@prefix + sub(msg, args))
30
+ end
31
+
32
+ def debug(msg, *args)
33
+ logger.debug(@prefix + sub(msg, args))
34
+ end
35
+
36
+ def error(msg, *args)
37
+ logger.error(@prefix + sub(msg, args))
38
+ end
39
+
40
+ def fatal(msg, *args)
41
+ logger.fatal(@prefix + sub(msg, args))
42
+ end
43
+
44
+ def get_logger(name)
45
+ self
46
+ end
47
+
48
+ def sub(msg, *args); msg.gsub("{}") { args.shift }; end
49
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jruby-rack-jetty
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.2.0
6
+ platform: ruby
7
+ authors:
8
+ - Nick Griffiths
9
+ - Playlouder development team
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2012-09-10 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: jruby-rack
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 1.1.0
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ description: A basic adapter that lets you run rack applications with jetty under JRuby
28
+ email:
29
+ - nicobrevin@gmail.com
30
+ - devs@playlouder.com
31
+ executables: []
32
+
33
+ extensions: []
34
+
35
+ extra_rdoc_files: []
36
+
37
+ files:
38
+ - lib/rack/handler/jetty.rb
39
+ - lib/rack/handler/jetty/log_adapter.rb
40
+ - java/servlet-api.jar
41
+ - java/jetty-util.jar
42
+ - java/jetty-plus.jar
43
+ - java/jetty.jar
44
+ - java/jetty-management.jar
45
+ homepage: https://github.com/nicobrevin/jruby-rack-jetty
46
+ licenses: []
47
+
48
+ post_install_message:
49
+ rdoc_options: []
50
+
51
+ require_paths:
52
+ - lib
53
+ - java
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: "0"
66
+ requirements: []
67
+
68
+ rubyforge_project:
69
+ rubygems_version: 1.8.9
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: Jetty support for jruby-rack
73
+ test_files: []
74
+