glassfish 0.9.5-universal-java → 1.0.0-universal-java

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.
Files changed (109) hide show
  1. data/History.txt +247 -0
  2. data/LICENSE.txt +774 -0
  3. data/README.txt +140 -0
  4. data/bin/gfrake +5 -1
  5. data/bin/glassfish +5 -7
  6. data/generators/gfrake/templates/glassfish.yml +39 -0
  7. data/lib/command_line_parser.rb +29 -40
  8. data/lib/config.rb +57 -63
  9. data/lib/glassfish.rb +3 -79
  10. data/{modules → lib/java}/akuma.jar +0 -0
  11. data/lib/java/gf-jruby-connector.jar +0 -0
  12. data/lib/java/glassfish-embedded-nucleus.jar +0 -0
  13. data/lib/java/glassfish-gem.jar +0 -0
  14. data/lib/java/grizzly-jruby-module.jar +0 -0
  15. data/lib/java/grizzly-jruby.jar +0 -0
  16. data/lib/jruby/rack/grizzly_helper.rb +230 -0
  17. data/lib/jruby/rack/merb.rb +34 -0
  18. data/lib/jruby/rack/rackup.rb +46 -0
  19. data/lib/jruby/rack/rails.rb +29 -0
  20. data/lib/jruby/rack/sinatra.rb +18 -0
  21. data/lib/jruby/rails_path.rb +11 -0
  22. data/lib/{templates/profile.properties → rack/adapter/merb.rb} +18 -7
  23. data/lib/rack/adapter/rails.rb +268 -0
  24. data/lib/rack/handler/grizzly.rb +59 -0
  25. data/lib/server.rb +164 -0
  26. data/lib/version.rb +1 -1
  27. metadata +83 -153
  28. data/bin/glassfish_rails +0 -61
  29. data/config/asadminenv.conf +0 -6
  30. data/config/asenv.bat +0 -29
  31. data/config/asenv.conf +0 -31
  32. data/config/glassfish.container +0 -4
  33. data/domains/domain1/config/admin-keyfile +0 -3
  34. data/domains/domain1/config/cacerts.jks +0 -0
  35. data/domains/domain1/config/default-web.xml +0 -1133
  36. data/domains/domain1/config/domain-passwords +0 -0
  37. data/domains/domain1/config/domain.xml +0 -190
  38. data/domains/domain1/config/glassfish_gem_version.yml +0 -7
  39. data/domains/domain1/config/keyfile +0 -6
  40. data/domains/domain1/config/keystore.jks +0 -0
  41. data/domains/domain1/config/logging.properties +0 -46
  42. data/domains/domain1/config/login.conf +0 -21
  43. data/domains/domain1/config/server.policy +0 -170
  44. data/domains/domain1/config/sun-acc.xml +0 -40
  45. data/domains/domain1/docroot/index.html +0 -83
  46. data/domains/domain1/master-password +0 -0
  47. data/lib/appclient/appclientlogin.conf +0 -10
  48. data/lib/appclient/client.policy +0 -79
  49. data/lib/appclient/wss-client-config-1.0.xml +0 -84
  50. data/lib/appclient/wss-client-config-2.0.xml +0 -96
  51. data/lib/registration/servicetag-registry.xml +0 -18
  52. data/lib/templates/cacerts.jks +0 -0
  53. data/lib/templates/default-web.xml +0 -1133
  54. data/lib/templates/docroot/index.html +0 -83
  55. data/lib/templates/domain.xml +0 -180
  56. data/lib/templates/domain.xml.xsl +0 -100
  57. data/lib/templates/keyfile +0 -6
  58. data/lib/templates/keystore.jks +0 -0
  59. data/lib/templates/logging.properties +0 -48
  60. data/lib/templates/login.conf +0 -21
  61. data/lib/templates/server.policy +0 -170
  62. data/lib/templates/sun-acc.xml +0 -40
  63. data/modules/admin-cli.jar +0 -0
  64. data/modules/api-exporter.jar +0 -0
  65. data/modules/asm-all-repackaged.jar +0 -0
  66. data/modules/auto-depends.jar +0 -0
  67. data/modules/bean-validator.jar +0 -0
  68. data/modules/branding.jar +0 -0
  69. data/modules/cli-framework.jar +0 -0
  70. data/modules/common-util.jar +0 -0
  71. data/modules/config-api.jar +0 -0
  72. data/modules/config.jar +0 -0
  73. data/modules/deployment-admin.jar +0 -0
  74. data/modules/deployment-autodeploy.jar +0 -0
  75. data/modules/deployment-common.jar +0 -0
  76. data/modules/flashlight-agent.jar +0 -0
  77. data/modules/flashlight-framework.jar +0 -0
  78. data/modules/gf-jruby-connector.jar +0 -0
  79. data/modules/gfprobe-provider-client.jar +0 -0
  80. data/modules/glassfish-api.jar +0 -0
  81. data/modules/glassfish-ee-api.jar +0 -0
  82. data/modules/glassfish-extra-jre-packages.jar +0 -0
  83. data/modules/glassfish-gem.jar +0 -0
  84. data/modules/glassfish.jar +0 -0
  85. data/modules/grizzly-comet.jar +0 -0
  86. data/modules/grizzly-cometd.jar +0 -0
  87. data/modules/grizzly-compat.jar +0 -0
  88. data/modules/grizzly-config.jar +0 -0
  89. data/modules/grizzly-framework.jar +0 -0
  90. data/modules/grizzly-http.jar +0 -0
  91. data/modules/grizzly-jruby-module.jar +0 -0
  92. data/modules/grizzly-jruby.jar +0 -0
  93. data/modules/grizzly-messagesbus.jar +0 -0
  94. data/modules/grizzly-portunif.jar +0 -0
  95. data/modules/grizzly-rcm.jar +0 -0
  96. data/modules/grizzly-utils.jar +0 -0
  97. data/modules/hk2-core.jar +0 -0
  98. data/modules/hk2.jar +0 -0
  99. data/modules/internal-api.jar +0 -0
  100. data/modules/kernel.jar +0 -0
  101. data/modules/launcher.jar +0 -0
  102. data/modules/org.apache.felix.configadmin.jar +0 -0
  103. data/modules/org.apache.felix.fileinstall.jar +0 -0
  104. data/modules/org.apache.felix.shell.jar +0 -0
  105. data/modules/org.apache.felix.shell.remote.jar +0 -0
  106. data/modules/org.apache.felix.shell.tui.jar +0 -0
  107. data/modules/osgi-main.jar +0 -0
  108. data/modules/pkg-client.jar +0 -0
  109. data/modules/tiger-types-osgi.jar +0 -0
@@ -0,0 +1,140 @@
1
+ = GlassFish v3 server for Rack based web frameworks (Rails, Merb, ...)
2
+
3
+ GlassFish gem is a lightweight and robust deployment solution for
4
+ Ruby on Rails applications deployed on JRuby runtime. It is based
5
+ on GlassFish v3 application server.
6
+
7
+ GlassFish v3 is a Java based application server that allows deployment,
8
+ administration and monitoring of JavaEE as well as dynamic languages based web
9
+ frameworks such as Ruby On Rails, Grails etc.
10
+
11
+ GlassFish gem is based on GlassFish v3 nucleus. GlassFish v3 nucleus is the core module of GlassFish v3.
12
+
13
+ For more information on GlassFish v3 application server see GlassFish project page[https://glassfish.dev.java.net/].
14
+
15
+ == Requires JDK 6
16
+ Get JDK 6 from here[http://java.sun.com/javase/downloads/index.jsp]
17
+
18
+ == Supported Rack based frameworks
19
+
20
+ * Rails
21
+ * Merb
22
+ * Sinatra
23
+
24
+ === Getting Started
25
+
26
+ 1. Install the gem: <tt>gem install glassfish</tt>.
27
+ 2. Run glassfish in the top directory of your Rails or Merb application:
28
+
29
+ $glassfish
30
+
31
+ === Usage
32
+
33
+ GlassFish gem's +glassfish+ command autodetects the application you trying to
34
+ run on it. Internally it uses Grizzly handler to plugin to Rack interface of
35
+ the application frameworks such as Rails, Merb or Sinatra.
36
+
37
+ $ glassfish
38
+
39
+ That's all you need to run your application.
40
+
41
+ $glassfish -h
42
+
43
+ ===Synopsis
44
+
45
+ glassfish: GlassFish v3 server for Rack based frameworks such as: Rails,
46
+ Merb, Sinatra...
47
+
48
+ ===Usage:
49
+
50
+ glassfish [OPTION] APPLICATION_PATH
51
+
52
+ -h, --help: show help
53
+
54
+ -c, --contextroot PATH: change the context root (default: '/')
55
+
56
+ -p, --port PORT: change server port (default: 3000)
57
+
58
+ -a, --address HOST: bind to HOST address (default: 0.0.0.0)
59
+
60
+ -e, --environment ENV: change rails environment (default: development)
61
+
62
+ -n --runtimes NUMBER: Number of JRuby runtimes to create initially
63
+
64
+ --runtimes-min NUMBER: Minimum JRuby runtimes to create
65
+
66
+ --runtimes-max NUMBER: Maximum number of JRuby runtimes to create
67
+
68
+ -d, --daemon: Run GlassFish as daemon. Currently works with
69
+ Linux and Solaris OS.
70
+
71
+ -P, --pid FILE: PID file where PID will be written. Applicable
72
+ when used with -d option. The default pid file
73
+ is tmp/pids/glassfish-<PID>.pid
74
+
75
+ -l, --log FILE: Log file, where the server log messages will go.
76
+ By default the server logs go to
77
+ log/development.log file. To see the logs on
78
+ console run with -l option without any argument.
79
+
80
+ --log-level LEVEL: Log level 0 to 7. 0:OFF, 1:SEVERE, 2:WARNING,
81
+ 3:INFO (default), 4:FINE, 5:FINER, 6:FINEST,
82
+ 7:ALL.
83
+
84
+ --config FILE: Configuration file location. Use glassfish.yml
85
+ as template. Generate it using 'gfrake config'
86
+ command.
87
+
88
+ APPLICATION_PATH (optional): Path to the application to be run (default:
89
+ current).
90
+
91
+ For further configuration, run GlassFish rake command 'gfrake -T'
92
+
93
+ ===Configuration
94
+
95
+ $gfrake -T
96
+
97
+ rake clean # Clean GlassFish generated temporary files (tmp/.glassfish)
98
+ rake config # Generate a configuration file to customize GlassFish gem
99
+ rake version # Display version of GlassFish gem
100
+
101
+ <b>Note:</b> Although help screen shows rake command. You need to use gfrake instead.
102
+
103
+ * <tt>gfrake config</tt> will place <b>glassfish.yml</b> in the application's config directory. <b>glassfish.yml</b> contains default options. Use it as template. You can also use <tt>--config</tt> option with the <tt>glassfish</tt> command
104
+
105
+ === Application auto-detection
106
+
107
+ Rails, Merb and Sinatra applications are detected automatically and configured appropriately. You can provide a rack-up script <tt>*.ru</tt> in to the application directory to plugin any other framework.
108
+
109
+ Some key points:
110
+
111
+ * Rails version < 2.2 is single threaded, for improved scaling you can
112
+ configure the JRuby runtime pool using <tt>--runtimes, --runtimes-min or
113
+ --runtimes-max</tt> options.
114
+ * Multi-thread-safe execution (as introduced in Rails 2.2 or for Merb) is
115
+ detected and runtime pooling is disabled. You would still need to tell Rails
116
+ to enable multi-threading by commenting out the following line from
117
+ <tt>config/environments/production.rb</tt>.
118
+
119
+ <tt>#config.threadsafe!</tt>
120
+
121
+ Or you can simply call config.threadsafe! form any Rails initialization
122
+ script.
123
+
124
+ === Known Issues
125
+
126
+ * Running <tt>glassfish</tt> in a directory that is neither a Rails or Merb
127
+ application does not report a meaningful error.
128
+ See this issue[https://glassfish.dev.java.net/issues/show_bug.cgi?id=6744]
129
+
130
+
131
+ === Source
132
+
133
+ You can get the GlassFish source using svn, in any of the following ways:
134
+
135
+ <tt>svn co https://svn.dev.java.net/svn/glassfish-scripting/trunk/rails/gem</tt>
136
+
137
+ === License
138
+
139
+ GlassFish v3 gem is provided with CDDL 1.0 and GPL 2.0 dual license. For
140
+ details see https://glassfish.dev.java.net/public/CDDL+GPL.html.
data/bin/gfrake CHANGED
@@ -48,7 +48,11 @@ application.standard_exception_handling do
48
48
  puts "(file #{GlassFish::Config::FILE} already exists. Pass argument FORCE=1 to override)"
49
49
  elsif !File.directory?("config")
50
50
  puts "(directory 'config' is missing)"
51
- else
51
+ else
52
+ if File.exists?(GlassFish::Config::FILE) #FORCE=1
53
+ puts "(Backing up #{GlassFish::Config::FILE}.)"
54
+ cp GlassFish::Config::FILE, GlassFish::Config::FILE+".bak"
55
+ end
52
56
  cp "#{GlassFish::HOME}/generators/gfrake/templates/glassfish.yml", GlassFish::Config::FILE
53
57
  end
54
58
  end
@@ -15,6 +15,9 @@
15
15
  # -p, --port PORT::
16
16
  # change server port (default: 3000)
17
17
  #
18
+ # -a, --address HOST::
19
+ # bind to HOST address (default: 0.0.0.0)
20
+ #
18
21
  # -e, --environment ENV::
19
22
  # change rails environment (default: development)
20
23
  #
@@ -46,13 +49,8 @@
46
49
  #
47
50
  # For further configuration, run GlassFish rake command 'gfrake -T'
48
51
 
49
- require "java"
50
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../modules"
51
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../lib"
52
-
53
- require 'command_line_parser'
54
52
  require 'glassfish'
55
53
 
56
54
  options = GlassFish::CommandLineParser.new.parse
57
- gf = GlassFish::Server.new
58
- gf.startup(options)
55
+ GlassFish::Server.start options
56
+
@@ -13,10 +13,49 @@ http:
13
13
 
14
14
  # port
15
15
  port: 3000
16
+
17
+ #address
18
+ address: 0.0.0.0
16
19
 
17
20
  # context root. The default value is '/'
18
21
  contextroot: /
19
22
 
23
+ # Grizzly is NIO based HTTP libraries used by GlassFish gem
24
+ grizzly:
25
+ #HTTP chunking enable/disable
26
+ chunking-enabled: true
27
+
28
+ # Time after which the request times out in seconds
29
+ request-timeout: 30
30
+
31
+ #Send buffer size
32
+ send-buffer-size: 8192
33
+
34
+ #maximum number of keep-alive connections
35
+ max-keepalive-connextions: 256
36
+
37
+ #Keep Alive timeout, max time a connection can be deemed as idle and kept
38
+ #in the keep-alive state
39
+ keepalive-timeout: 30
40
+
41
+ #http thread pool used by Grizzly
42
+ thread-pool:
43
+ #Idle threads are removed from pool, after this time (in seconds)
44
+ idle-thread-timeout-seconds: 900
45
+
46
+ #The maxim number of tasks, which could be queued on the thread pool.
47
+ #-1 disables any maximum checks.
48
+ max-queue-size: 4096
49
+
50
+ #Maximum number of threads in the threadpool servicing
51
+ #requests in this queue. This is the upper bound on the no. of
52
+ #threads that exist in the threadpool.
53
+ max-thread-pool-size: 5
54
+
55
+ #Minimum number of threads in the threadpool servicing
56
+ #requests in this queue. These are created up front when this
57
+ #threadpool is instantiated
58
+ min-thread-pool-size: 2
20
59
 
21
60
  #Logging configuration
22
61
  log:
@@ -45,33 +45,18 @@ require 'java'
45
45
  #
46
46
  module GlassFish
47
47
  class CommandLineParser
48
+ attr_accessor :config
48
49
 
49
- def init_opts
50
- @@config ||= {
51
- :runtimes => 1,
52
- :runtimes_min => 1,
53
- :runtimes_max => 1,
54
- :contextroot => '/',
55
- :environment => "development",
56
- :app_dir => Dir.pwd,
57
- :port => 3000,
58
- :pid => nil,
59
- :log => nil,
60
- :log_console => false,
61
- :log_level => 3,
62
- :daemon => false,
63
- :jvm_options => nil
64
- }
65
- end
66
50
 
67
51
  def parse
68
-
52
+
69
53
  check_java
70
54
 
71
- config = init_opts
72
-
55
+ @config = Config.init_opts
56
+
73
57
  opts = GetoptLong.new(
74
58
  [ '--port', '-p', GetoptLong::REQUIRED_ARGUMENT ],
59
+ [ '--address', '-a', GetoptLong::REQUIRED_ARGUMENT ],
75
60
  [ '--environment', '-e', GetoptLong::REQUIRED_ARGUMENT ],
76
61
  [ '--contextroot', '-c', GetoptLong::REQUIRED_ARGUMENT ],
77
62
  [ '--config', GetoptLong::REQUIRED_ARGUMENT ],
@@ -86,7 +71,7 @@ module GlassFish
86
71
  [ '--help', '-h', GetoptLong::NO_ARGUMENT ]
87
72
  )
88
73
 
89
- config_file = File.join(config[:app_dir], "config", "glassfish.yml")
74
+ config_file = File.join(config[:app_dir], "config", "glassfish.yml")
90
75
  opts.each do |opt, arg|
91
76
  case opt
92
77
  when '--version'
@@ -97,6 +82,8 @@ module GlassFish
97
82
  RDoc::usage
98
83
  when '--contextroot'
99
84
  config[:contextroot] = arg
85
+ when '--address'
86
+ config[:address] = arg
100
87
  when '--port'
101
88
  config[:port] = arg.to_i
102
89
  when '--environment'
@@ -127,21 +114,18 @@ module GlassFish
127
114
 
128
115
 
129
116
  config[:app_dir] = ARGV.shift unless ARGV.empty?
130
-
117
+
131
118
  #Read the config file from config/glasfish.yml
132
119
  config_file = Config::absolutize config[:app_dir],config_file
133
120
  read_glassfish_config(config_file, config)
134
121
 
135
- #Validate the command line options
136
- Config.new.validate config
137
-
138
122
  config
139
123
 
140
124
  end
141
125
 
142
126
  private
143
127
 
144
- # Read glassfish config file from config/glassfish.yml. CLI options will
128
+ # Read glassfish config file from config/glassfish.yml. CLI options will
145
129
  # override the glassfish.yml configurations
146
130
  def read_glassfish_config(cfile, config)
147
131
 
@@ -157,15 +141,20 @@ module GlassFish
157
141
  case opt
158
142
  when 'http'
159
143
  val = arg['port']
160
- if(!val.nil?)
161
- config[:port] = val.to_i
162
- end
144
+ config[:port] = val.to_i unless val.nil?
145
+
146
+ val = arg['address']
147
+ config[:address] = val unless val.nil?
163
148
 
164
149
  val = arg['contextroot']
165
150
  config[:contextroot] = val unless val.nil?
166
- when 'log'
151
+
152
+
153
+ config[:grizzly_config] = arg['grizzly'] unless arg['grizzly'].nil?
154
+
155
+ when 'log'
167
156
  val = arg['log-file']
168
- if(!val.nil?)
157
+ unless val.nil?
169
158
  config[:log] = Config::absolutize config[:app_dir], val
170
159
  end
171
160
 
@@ -175,7 +164,7 @@ module GlassFish
175
164
  config[:runtimes] = arg['initial'] unless arg['initial'].nil?
176
165
  config[:runtimes_min] = arg['min'] unless arg['min'].nil?
177
166
  config[:runtimes_max] = arg['max'] unless arg['max'].nil?
178
- when 'daemon'
167
+ when 'daemon'
179
168
  config[:daemon] = arg['enable'] unless arg['enable'].nil?
180
169
  if(!arg['pid'].nil?)
181
170
  if(!config[:daemon])
@@ -184,23 +173,23 @@ module GlassFish
184
173
  config[:pid] = File.expand_path arg['pid']
185
174
  end
186
175
  end
187
-
176
+
188
177
  #CLI option are overriden by glassfish.yml settings
189
178
  if(!data['daemon'].nil? and (data['daemon'] or config[:daemon]))
190
- config[:jvm_options] = arg['jvm-options'] unless arg['jvm-options'].nil?
179
+ config[:jvm_options] = arg['jvm-options'] unless arg['jvm-options'].nil?
191
180
  else
192
181
  STDERR.puts "Ignoring JVM options #{arg}. JVM options can only be passed in daemon mode. To use these, enable daemon mode"
193
- end
182
+ end
194
183
  when 'environment'
195
184
  config[:environment] = arg unless arg.nil?
196
- end
197
- end
198
- end
185
+ end
186
+ end
187
+ end
199
188
 
200
189
  def check_java
201
- begin
190
+ begin
202
191
  java.lang.Class.forName("javax.xml.ws.Service")
203
- rescue
192
+ rescue
204
193
  #It is not Java6, fail
205
194
  STDERR.puts "ERROR: You are running, Java version: "+java.lang.System.getProperty("java.version")+"."
206
195
  STDERR.puts "ERROR: GlassFish gem needs Java ver. 6.0 or higher!"
@@ -45,17 +45,37 @@ module GlassFish
45
45
  PID_FILE = Dir.pwd+File::SEPARATOR+"tmp"+File::SEPARATOR+"pids"+File::SEPARATOR+"glassfish"
46
46
  DEFAULT_JVM_OPTS = "-server -Xmx512m -XX:MaxPermSize=192m -XX:NewRatio=2 -XX:+DisableExplicitGC -Dhk2.file.directory.changeIntervalTimer=6000";
47
47
 
48
- # Validates the configuration options. If it can will revert to default else
49
- # fail
50
- def validate config
48
+ def self.init_opts
49
+ {
50
+ :runtimes => 1,
51
+ :runtimes_min => 1,
52
+ :runtimes_max => 1,
53
+ :contextroot => '/',
54
+ :environment => "development",
55
+ :app_dir => Dir.pwd,
56
+ :port => 3000,
57
+ :address => "0.0.0.0",
58
+ :pid => nil,
59
+ :log => nil,
60
+ :log_console => false,
61
+ :log_level => 3,
62
+ :daemon => false,
63
+ :jvm_options => nil
64
+ }
65
+ end
66
+
67
+
68
+ # Validates the configuration options. If it can will revert to default else
69
+ # fail
70
+ def validate! config
51
71
  # http configuration
52
72
  # port
53
73
  begin
54
- server = TCPServer.new '0.0.0.0', config[:port]
55
- rescue
56
- STDERR.puts "0.0.0.0:#{config[:port]}: " + $!
74
+ server = TCPServer.new config[:port]
75
+ rescue
76
+ STDERR.puts "#{config[:address]}:#{config[:port]}: " + $!
57
77
  #TODO: we should give an option of ephemeral port support
58
- exit(1)
78
+ exit(1)
59
79
  end
60
80
  server.close
61
81
 
@@ -63,25 +83,25 @@ module GlassFish
63
83
  if(config[:daemon])
64
84
  os = java.lang.System.getProperty("os.name").downcase
65
85
  version = java.lang.System.getProperty("os.version")
66
- #check the platform, Currently daemon mode works only on linux and
86
+ #check the platform, Currently daemon mode works only on linux and
67
87
  #solaris
68
88
  if(!os.include?("linux") and !os.include?("sunos"))
69
89
  Config.fail "You are running on #{java.lang.System.getProperty("os.name")} #{version}. Currently daemon mode only works on Linux or Solaris platforms!"
70
90
  end
71
-
91
+
72
92
  # In daemon mode you can't log to console. Let's fail and let user spcifiy the log file explicitly
73
93
  if(config[:log_console])
74
94
  Config.fail "Daemon mode detected, console logging is disabled in daemon mode. You must provide path to log file with --log|-l option in daemon mode."
75
95
  end
76
-
77
-
96
+
97
+
78
98
  if(config[:jvm_options].nil?)
79
99
  config[:jvm_options] = DEFAULT_JVM_OPTS
80
100
  end
81
101
  if(config[:pid].nil?)
82
102
  config[:pid] = PID_FILE
83
103
  end
84
-
104
+
85
105
  Config.absolutize config[:app_dir], config[:pid]
86
106
  end
87
107
 
@@ -91,6 +111,11 @@ module GlassFish
91
111
  Config.fail "\t0 OFF\n\t1 SEVERE \n\t2 WARNING\n\t3 INFO(default)\n\t4 FINE\n\t5 FINER\n\t6 FINEST\n\t7 ALL\n"
92
112
  end
93
113
 
114
+ if config[:runtimes] > config[:runtimes_max]
115
+ puts "Initial number of runtimes #{config[:runtimes]} is > max runtime #{config[:runtimes_max]}.\nIncreasing runtimes-max to #{config[:runtimes]}"
116
+ config[:runtimes_max] = config[:runtimes]
117
+ end
118
+
94
119
  # JRuby runtime
95
120
  runtimes_err = " Invalid runtime configuration, initial:#{config[:runtimes]}, min:#{config[:runtimes_min]}, max:#{config[:runtimes_max]}."
96
121
  err = false
@@ -133,7 +158,7 @@ module GlassFish
133
158
  end
134
159
 
135
160
 
136
- # pid file
161
+ # pid file
137
162
  #
138
163
  if(!config[:pid].nil? and !config[:daemon])
139
164
  GlassFish::Config::fail("--pid option can only be used with --daemon.")
@@ -145,12 +170,11 @@ module GlassFish
145
170
  domaindir = File.join(config[:app_dir], "tmp", ".glassfish")
146
171
  config[:domain_dir] = File.expand_path(domaindir)
147
172
 
148
- if !setup_temp_domain?File.join(domaindir, "config")
149
- puts "ERROR: Failed to create GlassFish domain directory: #{domaindir}"
173
+ if !check_domain_dir?domaindir
150
174
  exit -1
151
175
  end
152
176
  end
153
-
177
+
154
178
  def self.fail(message)
155
179
  STDERR.puts "ERROR: #{message}"
156
180
  STDERR.puts "Type 'glassfish -h' to get help"
@@ -167,64 +191,34 @@ module GlassFish
167
191
  end
168
192
  path
169
193
  end
170
-
194
+
171
195
 
172
196
  private
173
197
 
174
- #
175
- #Create a domain directory and copy the domain.xml and logging.properties
176
- #there. This will take care of infamous bug that causes people to run
177
- # glassfish gem as sudo if jruby is installed as root
178
- #
179
- def setup_temp_domain? config_dir
180
- if !File.exist? config_dir
181
- FileUtils.mkdir_p config_dir
198
+ def check_domain_dir?(domain_dir)
199
+ #create Glassfish domain directory if it does not exist
200
+ unless File.exist? domain_dir
201
+ File.makedirs(domain_dir)
202
+ return true
182
203
  end
183
204
 
184
- #glassfish v3 preview release writes down the exact port number in domain.xml. to make
185
- #it work, we need to update domain.xml and logging.properties everytime the app is run
186
- same_version?config_dir
187
- return check_domain_dir? config_dir
188
- end
189
-
190
- def check_domain_dir?(config_dir)
191
- if !File.writable_real?config_dir
192
- return false
205
+ config_dir = File.join(domain_dir, "config")
206
+ unless File.exist? config_dir
207
+ File.makedirs(config_dir)
208
+ return true
193
209
  end
194
- src = File.dirname(__FILE__)+File::SEPARATOR+".."+File::SEPARATOR+"domains"+File::SEPARATOR+"domain1"+File::SEPARATOR+"config"
195
- File.cp(File.join(src,"domain.xml"), config_dir)
196
- File.cp(File.join(src,"logging.properties"), config_dir)
197
-
198
- #make sure both these files are writable
199
- FileUtils.chmod(0755, File.join(config_dir,"domain.xml"))
200
- FileUtils.chmod(0755, File.join(config_dir,"logging.properties"))
201
210
 
202
- end
203
-
204
- #
205
- #Returns true if there is glasfish_gem_version.yml file and has the same
206
- #version as the glassfish gem. Otherwise creates a new file and returns
207
- #false so that rest of the stuff can be created
208
- #
209
- def same_version?(config_dir)
210
- f = File.join(config_dir, 'glassfish_gem_version.yml')
211
- if !File.exist? f
212
- src = File.join(File.dirname(__FILE__), "..", "domains", "domain1", "config", "glassfish_gem_version.yml")
213
- File.cp src, config_dir
211
+ if !File.writable_real?config_dir
212
+ puts "ERROR: GlassFish temporary directory: #{config_dir} not writable. Please give write permission to proceed."
214
213
  return false
215
214
  end
216
- file = File.open(f)
217
- data = YAML::load(file)
218
215
 
219
- #this is probably corrupted, return false so that a new one can be placed
220
- if not data.key?'glassfish'
221
- return false;
222
- end
223
- version = data['glassfish'].fetch('version', nil)
224
- if(version.nil?)
225
- return false
216
+ #glassfish gem <=0.9.5 created domain.xml, this causes latter version
217
+ #to fail so removing this as no more needed
218
+ if(File.exist?(config_dir) and File.exist?(File.join(config_dir, "domain.xml")))
219
+ FileUtils.rmtree config_dir
226
220
  end
227
- version.eql?GlassFish::VERSION
221
+ true
228
222
  end
229
223
  end
230
224
  end