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.
- data/java/jetty-management.jar +0 -0
- data/java/jetty-plus.jar +0 -0
- data/java/jetty-util.jar +0 -0
- data/java/jetty.jar +0 -0
- data/java/servlet-api.jar +0 -0
- data/lib/rack/handler/jetty.rb +80 -0
- data/lib/rack/handler/jetty/log_adapter.rb +49 -0
- metadata +74 -0
Binary file
|
data/java/jetty-plus.jar
ADDED
Binary file
|
data/java/jetty-util.jar
ADDED
Binary file
|
data/java/jetty.jar
ADDED
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
|
+
|