jruby-rack-jetty 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+