torquebox-core 4.0.0.beta2-java → 4.0.0.beta3-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/torquebox-core.jar +0 -0
- data/lib/torquebox-core.rb +2 -1
- data/lib/torquebox/cli.rb +1 -1
- data/lib/torquebox/cli/archive.rb +3 -0
- data/lib/torquebox/cli/jar.rb +18 -2
- data/lib/torquebox/daemon.rb +157 -0
- data/lib/torquebox/version.rb +3 -3
- data/lib/wunderboss-jars/logback-classic-1.1.3.jar +0 -0
- data/lib/wunderboss-jars/logback-core-1.1.3.jar +0 -0
- data/lib/wunderboss-jars/slf4j-api-1.7.7.jar +0 -0
- data/lib/wunderboss-jars/wunderboss-core-0.12.1.jar +0 -0
- data/lib/wunderboss-jars/{wunderboss-ruby-0.8.0.jar → wunderboss-ruby-0.12.1.jar} +0 -0
- data/lib/wunderboss-jars/wunderboss-wildfly-core-0.12.1.jar +0 -0
- metadata +19 -18
- data/lib/wunderboss-jars/logback-classic-1.1.2.jar +0 -0
- data/lib/wunderboss-jars/logback-core-1.1.2.jar +0 -0
- data/lib/wunderboss-jars/slf4j-api-1.7.5.jar +0 -0
- data/lib/wunderboss-jars/wunderboss-core-0.8.0.jar +0 -0
- data/lib/wunderboss-jars/wunderboss-wildfly-0.8.0.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddd01042745f0acb74e5cd5c698edfcd5dfbbd06
|
4
|
+
data.tar.gz: 1c64810b337f920ea9dc8ff1bad6e31a99853899
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7e9a657df452f20ec5781e76b9b5f2bb3ef7b5f6bceb8071bee480bc14936fdf243bc0b0b0d7e5cb42bcf890b65002b93153640bc2e0f71081dcc2d3415c803
|
7
|
+
data.tar.gz: aa0c26f15d5fc56cf11454fc0d1eaefd89c1306358c27b2c461adf6412d8246801dc63ed7524846661f56865940d5dfafafd962b73ed65672ca64281af57b2ce
|
data/lib/torquebox-core.jar
CHANGED
Binary file
|
data/lib/torquebox-core.rb
CHANGED
@@ -46,7 +46,7 @@ module TorqueBox
|
|
46
46
|
|
47
47
|
class << self
|
48
48
|
def in_wildfly?
|
49
|
-
|
49
|
+
org.projectodd.wunderboss.WunderBoss.inWildFly
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -60,6 +60,7 @@ require 'torquebox/cli'
|
|
60
60
|
require 'torquebox/cli/archive'
|
61
61
|
require 'torquebox/cli/jar'
|
62
62
|
require 'torquebox/cli/war'
|
63
|
+
require 'torquebox/daemon'
|
63
64
|
require 'torquebox/logger'
|
64
65
|
require 'torquebox/option_utils'
|
65
66
|
require 'torquebox/version'
|
data/lib/torquebox/cli.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require 'optparse'
|
16
|
+
require 'rbconfig'
|
16
17
|
|
17
18
|
module TorqueBox
|
18
19
|
class CLI
|
@@ -41,11 +42,13 @@ module TorqueBox
|
|
41
42
|
# "java -jar foo.jar -S torquebox help" work without quotes
|
42
43
|
arg = ([arg] + @argv).join(' ')
|
43
44
|
app_jar = java.lang.System.get_property("torquebox.app_jar")
|
45
|
+
lib_dir = RbConfig::CONFIG['libdir']
|
44
46
|
load_path = $LOAD_PATH.map { |entry| "-I#{entry}" }.join(' ')
|
45
47
|
jars = Dir.glob("../jars/*.jar").map { |j| "-r#{j}" }.join(' ')
|
46
48
|
# PWD is $tmpdir/app and jruby.jar is $tmpdir/jars/jruby.jar
|
47
49
|
Kernel.exec("java -Dtorquebox.app_jar=#{app_jar} \
|
48
50
|
-Djava.io.tmpdir=#{java.lang.System.get_property('java.io.tmpdir')} \
|
51
|
+
-Djruby.lib=#{lib_dir} \
|
49
52
|
-jar ../jars/jruby.jar #{load_path} -r#{app_jar} \
|
50
53
|
#{jars} -rbundler/setup -rtorquebox/cli/archive_cleaner \
|
51
54
|
-S #{arg}")
|
data/lib/torquebox/cli/jar.rb
CHANGED
@@ -163,11 +163,27 @@ module TorqueBox
|
|
163
163
|
:pattern => "/*",
|
164
164
|
:jar_prefix => "jruby/bin")
|
165
165
|
add_jar(jar_builder, "#{rb_config['libdir']}/jruby.jar")
|
166
|
+
add_default_gems(jar_builder)
|
167
|
+
end
|
168
|
+
|
169
|
+
def add_default_gems(jar_builder)
|
170
|
+
default_spec_suffix = "specifications/default"
|
171
|
+
default_spec_dir = "#{Gem.default_dir}/#{default_spec_suffix}"
|
172
|
+
jar_prefix = "jruby/lib/ruby/gems/shared"
|
173
|
+
Dir.glob("#{default_spec_dir}/*.gemspec").each do |file|
|
174
|
+
jar_builder.add_file(File.join(jar_prefix, default_spec_suffix,
|
175
|
+
File.basename(file)), file)
|
176
|
+
gem_full_name = File.basename(file, ".*")
|
177
|
+
add_files(jar_builder,
|
178
|
+
:file_prefix => "#{Gem.default_dir}/gems/#{gem_full_name}",
|
179
|
+
:pattern => "/**/*",
|
180
|
+
:jar_prefix => "#{jar_prefix}/gems/#{gem_full_name}")
|
181
|
+
end
|
166
182
|
end
|
167
183
|
|
168
184
|
def add_app_files(jar_builder, options)
|
169
185
|
@logger.trace("Adding application files to jar...")
|
170
|
-
exclude = [
|
186
|
+
exclude = [Regexp.new("^[^/]*\.(jar|war)")]
|
171
187
|
if options[:exclude]
|
172
188
|
exclude += options[:exclude].map { |e| Regexp.new("^#{e}") }
|
173
189
|
end
|
@@ -285,7 +301,7 @@ module TorqueBox
|
|
285
301
|
def add_files(jar_builder, options)
|
286
302
|
prefix = options[:file_prefix]
|
287
303
|
prefix += '/' unless prefix.end_with?('/')
|
288
|
-
Dir.glob(
|
304
|
+
Dir.glob(File.join(prefix, options[:pattern])).each do |file|
|
289
305
|
suffix = file.sub(prefix, '')
|
290
306
|
excludes = [options[:exclude]].compact.flatten
|
291
307
|
next if excludes.any? do |exclude|
|
@@ -0,0 +1,157 @@
|
|
1
|
+
# Copyright 2015 Red Hat, Inc, and individual contributors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require 'torquebox/option_utils'
|
16
|
+
|
17
|
+
module TorqueBox
|
18
|
+
# Respresents a long-running daemon.
|
19
|
+
#
|
20
|
+
# When started, the daemon will execute its action in another
|
21
|
+
# thread, and if that thread throws an unhandled exception, the
|
22
|
+
# error will be logged and the action restarted.
|
23
|
+
#
|
24
|
+
# You can override this behavior by providing your own {#on_error}
|
25
|
+
# handler.
|
26
|
+
#
|
27
|
+
# In a WildFly cluster, daemons will be singletons, meaning only one
|
28
|
+
# instance of the daemon (based on its name) will run at a time. If
|
29
|
+
# the node running the daemon dies, it will start on another node as
|
30
|
+
# long as {#start} has been called on a daemon with the same name
|
31
|
+
# has been started on that node. If the daemon dies due to an error
|
32
|
+
# and is restarted (via {#start}), then the current node will be in
|
33
|
+
# competition with the other nodes in the cluster to start the
|
34
|
+
# daemon, and it may actually start on another node.
|
35
|
+
class Daemon
|
36
|
+
include TorqueBox::OptionUtils
|
37
|
+
extend TorqueBox::OptionUtils
|
38
|
+
|
39
|
+
java_import org.projectodd.wunderboss::WunderBoss
|
40
|
+
java_import org.projectodd.wunderboss.ec::DaemonContext
|
41
|
+
|
42
|
+
DAEMON_OPTIONS = optset(DaemonContext::CreateOption,
|
43
|
+
:on_error,
|
44
|
+
:on_stop)
|
45
|
+
|
46
|
+
# The name of this daemon.
|
47
|
+
attr_reader :name
|
48
|
+
|
49
|
+
# Creates a daemon object.
|
50
|
+
#
|
51
|
+
# Optionally takes a block that is the action of the daemon. If
|
52
|
+
# not provided, you must extend this class and override {#action}
|
53
|
+
# if you want the daemon to actually do anything. The block will
|
54
|
+
# be passed the daemon object.
|
55
|
+
#
|
56
|
+
# @param name [String] The name of this daemon. Needs to be the
|
57
|
+
# same across a cluster for :singleton to work, and must be
|
58
|
+
# unique.
|
59
|
+
# @param options [Hash] Options for the daemon.
|
60
|
+
# @option options :singleton [true, false] (true)
|
61
|
+
# @option options :on_error [Proc] A custom error handler, will be
|
62
|
+
# passed the daemon object and the error (see {#on_error})
|
63
|
+
# @option options :on_stop [Proc] A custom stop handler, will be
|
64
|
+
# passed the daemon object (see {#on_stop})
|
65
|
+
# @option options :stop_timeout [Number] (30_000) Milliseconds to
|
66
|
+
# wait for the daemon thread to exit when stopping.
|
67
|
+
def initialize(name, options = {}, &block)
|
68
|
+
validate_options(options, DAEMON_OPTIONS)
|
69
|
+
@name = name.to_s
|
70
|
+
@on_error_lambda = options.delete(:on_error)
|
71
|
+
@on_stop_lambda = options.delete(:on_stop)
|
72
|
+
@action_lambda = block
|
73
|
+
@options = options
|
74
|
+
|
75
|
+
if WunderBoss.find_component(DaemonContext.java_class, @name)
|
76
|
+
raise "A daemon named #{@name} already exists"
|
77
|
+
end
|
78
|
+
|
79
|
+
@java_daemon =
|
80
|
+
WunderBoss.find_or_create_component(DaemonContext.java_class,
|
81
|
+
@name,
|
82
|
+
extract_options(@options,
|
83
|
+
DaemonContext::CreateOption))
|
84
|
+
end
|
85
|
+
|
86
|
+
# Starts the daemon. If :singleton and in a cluster, the daemon
|
87
|
+
# may not be running on the current node after calling start.
|
88
|
+
# @return [Daemon] self
|
89
|
+
def start
|
90
|
+
@java_daemon.set_action do
|
91
|
+
action
|
92
|
+
end
|
93
|
+
|
94
|
+
@java_daemon.set_error_callback do |_, err|
|
95
|
+
on_error(err)
|
96
|
+
end
|
97
|
+
|
98
|
+
@java_daemon.set_stop_callback do |_|
|
99
|
+
on_stop
|
100
|
+
end
|
101
|
+
|
102
|
+
@java_daemon.start
|
103
|
+
|
104
|
+
self
|
105
|
+
end
|
106
|
+
|
107
|
+
# Stops the daemon. This will trigger the {#on_stop} callback if
|
108
|
+
# this daemon is {#running?}.
|
109
|
+
# @return [Daemon] self
|
110
|
+
def stop
|
111
|
+
if @java_daemon
|
112
|
+
@java_daemon.stop
|
113
|
+
end
|
114
|
+
|
115
|
+
self
|
116
|
+
end
|
117
|
+
|
118
|
+
# true if the daemon is actually running. If not :singleton or
|
119
|
+
# not in a cluster, and the action hasn't exited normally,
|
120
|
+
# running? == {#started?}
|
121
|
+
def running?
|
122
|
+
@java_daemon && @java_daemon.is_running
|
123
|
+
end
|
124
|
+
|
125
|
+
# true if in the started state. May not actually be running. see
|
126
|
+
# {#running?}
|
127
|
+
def started?
|
128
|
+
@java_daemon && @java_daemon.is_started
|
129
|
+
end
|
130
|
+
|
131
|
+
# The action to perform. If you override this method, the block
|
132
|
+
# given to {#initialize} will be ignored. You should never call
|
133
|
+
# this method directly.
|
134
|
+
def action
|
135
|
+
@action_lambda.call(self) if @action_lambda
|
136
|
+
end
|
137
|
+
|
138
|
+
# Called when an unhandled error occurs in #{action}. If you
|
139
|
+
# override this method, the :on_error proc given to #{initialize}
|
140
|
+
# will be ignored.
|
141
|
+
#
|
142
|
+
# @param error [] The error that occurred.
|
143
|
+
def on_error(error)
|
144
|
+
if @on_error_lambda
|
145
|
+
@on_error_lambda.call(self, error)
|
146
|
+
else
|
147
|
+
DaemonContext::DEFAULT_ERROR_CALLBACK.notify(@java_daemon.name, error)
|
148
|
+
start
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Called when {#stop} is called, but only if {#started?} is true.
|
153
|
+
def on_stop
|
154
|
+
@on_stop_lambda.call(self) if @on_stop_lambda
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
data/lib/torquebox/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torquebox-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.beta3
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- The TorqueBox Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jbundler
|
@@ -74,32 +74,33 @@ extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
76
|
- bin/torquebox
|
77
|
-
- lib/torquebox-core.rb
|
78
77
|
- lib/torquebox-core.jar
|
79
|
-
- lib/
|
80
|
-
- lib/wunderboss-jars/wunderboss-core-0.
|
81
|
-
- lib/wunderboss-jars/logback-core-1.1.2.jar
|
82
|
-
- lib/wunderboss-jars/logback-classic-1.1.2.jar
|
83
|
-
- lib/wunderboss-jars/slf4j-api-1.7.5.jar
|
84
|
-
- lib/wunderboss-jars/wunderboss-ruby-0.8.0.jar
|
78
|
+
- lib/torquebox-core.rb
|
79
|
+
- lib/wunderboss-jars/wunderboss-wildfly-core-0.12.1.jar
|
85
80
|
- lib/wunderboss-jars/jboss-logging-3.1.4.GA.jar
|
86
|
-
- lib/
|
81
|
+
- lib/wunderboss-jars/wunderboss-core-0.12.1.jar
|
82
|
+
- lib/wunderboss-jars/logback-core-1.1.3.jar
|
83
|
+
- lib/wunderboss-jars/wunderboss-ruby-0.12.1.jar
|
84
|
+
- lib/wunderboss-jars/logback-classic-1.1.3.jar
|
85
|
+
- lib/wunderboss-jars/slf4j-api-1.7.7.jar
|
86
|
+
- lib/torquebox/cli.rb
|
87
87
|
- lib/torquebox/spec_helpers.rb
|
88
88
|
- lib/torquebox/logger.rb
|
89
|
-
- lib/torquebox/
|
89
|
+
- lib/torquebox/version.rb
|
90
90
|
- lib/torquebox/codecs.rb
|
91
91
|
- lib/torquebox/option_utils.rb
|
92
|
-
- lib/torquebox/
|
92
|
+
- lib/torquebox/daemon.rb
|
93
|
+
- lib/torquebox/cli/archive_cleaner.rb
|
93
94
|
- lib/torquebox/cli/jar.rb
|
94
95
|
- lib/torquebox/cli/war.rb
|
95
|
-
- lib/torquebox/cli/archive_cleaner.rb
|
96
96
|
- lib/torquebox/cli/archive.rb
|
97
|
-
- lib/torquebox/codecs/marshal_smart.rb
|
98
|
-
- lib/torquebox/codecs/marshal.rb
|
99
|
-
- lib/torquebox/codecs/json.rb
|
100
97
|
- lib/torquebox/codecs/edn.rb
|
101
98
|
- lib/torquebox/codecs/marshal_base64.rb
|
99
|
+
- lib/torquebox/codecs/marshal_smart.rb
|
100
|
+
- lib/torquebox/codecs/marshal.rb
|
102
101
|
- lib/torquebox/codecs/text.rb
|
102
|
+
- lib/torquebox/codecs/json.rb
|
103
|
+
- lib/resources/logback-cli.xml
|
103
104
|
homepage: http://torquebox.org/4x
|
104
105
|
licenses:
|
105
106
|
- Apache-2.0
|
@@ -119,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
120
|
- !ruby/object:Gem::Version
|
120
121
|
version: 1.3.1
|
121
122
|
requirements:
|
122
|
-
- jar org.projectodd.wunderboss:wunderboss-ruby, 0.
|
123
|
-
- jar org.projectodd.wunderboss:wunderboss-wildfly, 0.
|
123
|
+
- jar org.projectodd.wunderboss:wunderboss-ruby, 0.12.1
|
124
|
+
- jar org.projectodd.wunderboss:wunderboss-wildfly-core, 0.12.1
|
124
125
|
rubyforge_project:
|
125
126
|
rubygems_version: 2.1.9
|
126
127
|
signing_key:
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|