Class: Trinidad::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/trinidad/server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = Trinidad.configuration) ⇒ Server

Returns a new instance of Server.



5
6
7
8
9
10
11
# File 'lib/trinidad/server.rb', line 5

def initialize(config = Trinidad.configuration)
  load_config(config)
  configure_logging(@config[:log])
  load_tomcat_server
  apps = create_web_apps
  load_host_monitor(apps)
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



3
4
5
# File 'lib/trinidad/server.rb', line 3

def config
  @config
end

#tomcatObject (readonly)

Returns the value of attribute tomcat.



3
4
5
# File 'lib/trinidad/server.rb', line 3

def tomcat
  @tomcat
end

Instance Method Details

#add_ajp_connectorObject



54
55
56
# File 'lib/trinidad/server.rb', line 54

def add_ajp_connector
  add_service_connector(@config[:ajp], 'AJP/1.3')
end

#add_http_connectorObject



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/trinidad/server.rb', line 58

def add_http_connector
  options = @config[:http] || {}
  options[:address] ||= @config[:address] if @config[:address] != 'localhost'
  options[:port] = @config[:port]
  options[:protocol_handler] = 'org.apache.coyote.http11.Http11NioProtocol' if options[:nio]

  if options[:apr]
    @tomcat.server.add_lifecycle_listener(Trinidad::Tomcat::AprLifecycleListener.new)
  end

  connector = add_service_connector(options, options[:protocol_handler] || 'HTTP/1.1')
  @tomcat.connector = connector
end

#add_service_connector(options, protocol = nil) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/trinidad/server.rb', line 90

def add_service_connector(options, protocol = nil)
  connector = Trinidad::Tomcat::Connector.new(protocol)
  opts = options.dup

  connector.scheme = opts.delete(:scheme) if opts[:scheme]
  connector.secure = opts.delete(:secure) || false
  connector.port = opts.delete(:port).to_i

  connector.protocol_handler_class_name = opts.delete(:protocol_handler) if opts[:protocol_handler]

  opts.each do |key, value|
    connector.setProperty(key.to_s, value.to_s)
  end

  @tomcat.service.add_connector(connector)
  connector
end

#add_ssl_connectorObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/trinidad/server.rb', line 72

def add_ssl_connector
  options = @config[:ssl].merge({
    :scheme => 'https',
    :secure => true,
    :SSLEnabled => 'true'
  })

  options[:keystoreFile] ||= options.delete(:keystore)

  if !options[:keystoreFile] && !options[:SSLCertificateFile]
    options[:keystoreFile] = 'ssl/keystore'
    options[:keystorePass] = 'waduswadus42'
    generate_default_keystore(options)
  end

  add_service_connector(options)
end

#add_web_app(web_app, host = nil) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/trinidad/server.rb', line 108

def add_web_app(web_app, host = nil)
  host ||= web_app.config[:host] || @tomcat.host
  app_context = @tomcat.addWebapp(host, web_app.context_path, web_app.web_app_dir)
  Trinidad::Extensions.configure_webapp_extensions(web_app.extensions, @tomcat, app_context)
  app_context.add_lifecycle_listener(web_app.define_lifecycle)
  app_context
end

#ajp_enabled?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/trinidad/server.rb', line 46

def ajp_enabled?
  @config[:ajp] && !@config[:ajp].empty?
end

#http_configured?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/trinidad/server.rb', line 50

def http_configured?
  (@config[:http] && !@config[:http].empty?) || @config[:address] != 'localhost'
end

#load_config(config) ⇒ Object



13
14
15
16
# File 'lib/trinidad/server.rb', line 13

def load_config(config)
  add_default_web_app! config
  @config = config.freeze
end

#load_host_monitor(apps) ⇒ Object



36
37
38
39
40
# File 'lib/trinidad/server.rb', line 36

def load_host_monitor(apps)
  @tomcat.engine.find_children.each do |host|
    host.add_lifecycle_listener(Trinidad::Lifecycle::Host.new(self, *apps))
  end
end

#load_tomcat_serverObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/trinidad/server.rb', line 18

def load_tomcat_server
  load_default_system_properties

  @tomcat = Trinidad::Tomcat::Tomcat.new
  @tomcat.base_dir = Dir.pwd
  @tomcat.hostname = @config[:address] || 'localhost'
  @tomcat.server.address = @config[:address]
  @tomcat.port = @config[:port].to_i
  create_hosts
  @tomcat.enable_naming

  add_http_connector if http_configured?
  add_ssl_connector if ssl_enabled?
  add_ajp_connector if ajp_enabled?

  @tomcat = Trinidad::Extensions.configure_server_extensions(@config[:extensions], @tomcat)
end

#ssl_enabled?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/trinidad/server.rb', line 42

def ssl_enabled?
  @config[:ssl] && !@config[:ssl].empty?
end

#startObject



116
117
118
119
120
121
# File 'lib/trinidad/server.rb', line 116

def start
  trap_signals if @config[:trap]

  @tomcat.start
  @tomcat.server.await
end

#stopObject



123
124
125
126
# File 'lib/trinidad/server.rb', line 123

def stop
  @tomcat.stop
  @tomcat.destroy
end