glassfish 0.9.2-universal-java → 0.9.3-universal-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/bin/gfrake +67 -0
  2. data/bin/glassfish +54 -39
  3. data/bin/glassfish_rails +54 -39
  4. data/domains/domain1/config/domain.xml +1 -1
  5. data/domains/domain1/config/glassfish_gem_version.yml +7 -0
  6. data/domains/domain1/config/logging.properties +2 -2
  7. data/generators/gfrake/templates/glassfish.yml +97 -0
  8. data/{modules → lib}/asadmin.rb +0 -0
  9. data/lib/command_line_parser.rb +226 -0
  10. data/lib/config.rb +198 -0
  11. data/{modules/glassfish.rb → lib/gfraker.rb} +4 -21
  12. data/lib/glassfish.rb +78 -0
  13. data/{modules → lib}/rdoc_usage.rb +0 -0
  14. data/lib/templates/domain.xml +1 -1
  15. data/{modules → lib}/version.rb +2 -3
  16. data/modules/admin-cli.jar +0 -0
  17. data/modules/akuma.jar +0 -0
  18. data/modules/api-exporter.jar +0 -0
  19. data/modules/asm-all-repackaged.jar +0 -0
  20. data/modules/auto-depends.jar +0 -0
  21. data/modules/branding.jar +0 -0
  22. data/modules/cli-framework.jar +0 -0
  23. data/modules/common-util.jar +0 -0
  24. data/modules/config-api.jar +0 -0
  25. data/modules/config.jar +0 -0
  26. data/modules/deployment-admin.jar +0 -0
  27. data/modules/deployment-autodeploy.jar +0 -0
  28. data/modules/deployment-common.jar +0 -0
  29. data/modules/flashlight-agent.jar +0 -0
  30. data/modules/flashlight-framework.jar +0 -0
  31. data/modules/gf-jruby-connector.jar +0 -0
  32. data/modules/glassfish-api.jar +0 -0
  33. data/modules/glassfish-gem.jar +0 -0
  34. data/modules/glassfish.jar +0 -0
  35. data/modules/grizzly-framework.jar +0 -0
  36. data/modules/grizzly-http.jar +0 -0
  37. data/modules/grizzly-jruby-module.jar +0 -0
  38. data/modules/grizzly-jruby.jar +0 -0
  39. data/modules/grizzly-portunif.jar +0 -0
  40. data/modules/grizzly-rcm.jar +0 -0
  41. data/modules/grizzly-utils.jar +0 -0
  42. data/modules/hk2-core.jar +0 -0
  43. data/modules/hk2.jar +0 -0
  44. data/modules/internal-api.jar +0 -0
  45. data/modules/kernel.jar +0 -0
  46. data/modules/launcher.jar +0 -0
  47. data/modules/tiger-types-osgi.jar +0 -0
  48. metadata +115 -110
  49. data/bin/gfadmin +0 -5
  50. data/lib/jndi-properties.jar +0 -0
  51. data/lib/package-appclient.xml +0 -185
  52. data/lib/processLauncher.properties +0 -25
  53. data/lib/processLauncher.xml +0 -189
  54. data/modules/command_line_parser.rb +0 -94
data/bin/gfrake ADDED
@@ -0,0 +1,67 @@
1
+ #--
2
+ #DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
+ #
4
+ #Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
5
+ #
6
+ #The contents of this file are subject to the terms of either the GNU
7
+ #General Public License Version 2 only ("GPL") or the Common Development
8
+ #and Distribution License("CDDL") (collectively, the "License"). You
9
+ #may not use this file except in compliance with the License. You can obtain
10
+ #a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
11
+ #or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
12
+ #language governing permissions and limitations under the License.
13
+ #
14
+ #When distributing the software, include this License Header Notice in each
15
+ #file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
16
+ #Sun designates this particular file as subject to the "Classpath" exception
17
+ #as provided by Sun in the GPL Version 2 section of the License file that
18
+ #accompanied this code. If applicable, add the following below the License
19
+ #Header, with the fields enclosed by brackets [] replaced by your own
20
+ #identifying information: "Portions Copyrighted [year]
21
+ #[name of copyright owner]"
22
+ #
23
+ #Contributor(s):
24
+ #
25
+ #If you wish your version of this file to be governed by only the CDDL or
26
+ #only the GPL Version 2, indicate your decision by adding "[Contributor]
27
+ #elects to include this software in this distribution under the [CDDL or GPL
28
+ #Version 2] license." If you don't indicate a single choice of license, a
29
+ #recipient has the option to distribute your version of this file under
30
+ #either the CDDL, the GPL Version 2 or to extend the choice of license to
31
+ #its licensees as provided above. However, if you add GPL Version 2 code
32
+ #and therefore, elected the GPL Version 2 license, then the option applies
33
+ #only if the new code is made subject to such option by the copyright
34
+ #holder.
35
+ #++
36
+
37
+ require 'rubygems'
38
+ require 'rake'
39
+ require 'gfraker'
40
+
41
+ application = Rake.application
42
+ application.standard_exception_handling do
43
+ application.init
44
+
45
+ desc "Generate a configuration file to customize GlassFish gem"
46
+ task :config do
47
+ if File.exists?(GlassFish::Config::FILE) && ENV["FORCE"].nil?
48
+ puts "(file #{GlassFish::Config::FILE} already exists. Pass argument FORCE=1 to override)"
49
+ elsif !File.directory?("config")
50
+ puts "(directory 'config' is missing)"
51
+ else
52
+ cp "#{GlassFish::HOME}/generators/gfrake/templates/glassfish.yml", GlassFish::Config::FILE
53
+ end
54
+ end
55
+
56
+ desc "Clean GlassFish generated temporary files (tmp/.glassfish)"
57
+ task :clean do
58
+ rm_rf "tmp/.glassfish"
59
+ end
60
+
61
+ desc "Display version of warbler"
62
+ task :version do
63
+ require 'version'
64
+ puts "#{GlassFish::FULLVERSION}"
65
+ end
66
+ end
67
+ application.top_level
data/bin/glassfish CHANGED
@@ -1,42 +1,57 @@
1
- #!/usr/bin/env jruby
1
+ # == Synopsis
2
+ #
3
+ # glassfish: GlassFish v3 server for Rack based frameworks such as: Rails, Merb, Sinatra...
4
+ #
5
+ # == Usage:
6
+ #
7
+ # glassfish [OPTION] APPLICATION_PATH
8
+ #
9
+ # -h, --help::
10
+ # show help
11
+ #
12
+ # -c, --contextroot PATH::
13
+ # change the context root (default: '/')
14
+ #
15
+ # -p, --port PORT::
16
+ # change server port (default: 3000)
17
+ #
18
+ # -e, --environment ENV::
19
+ # change rails environment (default: development)
20
+ #
21
+ # -n --runtimes NUMBER::
22
+ # Number of JRuby runtimes to create initially
23
+ #
24
+ # --runtimes-min NUMBER::
25
+ # Minimum JRuby runtimes to create
26
+ #
27
+ # --runtimes-max NUMBER::
28
+ # Maximum number of JRuby runtimes to create
29
+ #
30
+ # -d, --daemon::
31
+ # Run GlassFish as daemon. Currently works with Linux and Solaris OS.
32
+ #
33
+ # -P, --pid FILE::
34
+ # PID file where PID will be written. Applicable when used with -d option. The default pid file is tmp/pids/glassfish-<PID>.pid
35
+ #
36
+ # -l, --log FILE::
37
+ # Log file, where the server log messages will go. By default the server logs go to log/glassfish.log file.
38
+ #
39
+ # --log-level LEVEL::
40
+ # Log level 0 to 7. 0:OFF, 1:SEVERE, 2:WARNING, 3:INFO (default), 4:FINE, 5:FINER, 6:FINEST, 7:ALL.
41
+ #
42
+ # --config FILE::
43
+ # Configuration file location. Use glassfish.yml as template. Generate it using 'gfrake config' command.
44
+ #
45
+ # APPLICATION_PATH (optional): Path to the application to be run (default: current).
46
+ # For further configuration, run GlassFish rake command 'gfrake -T'
2
47
 
3
- # == Synopsis
4
- #
5
- # glassfish: GlassFish v3 server for Rack based frameworks such as: rails, merb...
6
- #
7
- # == Usage:
8
- #
9
- # glassfish [OPTION] APPLICATION_PATH
10
- #
11
- # -h, --help::
12
- # show help
13
- #
14
- # -c, --contextroot PATH::
15
- # change the context root (default: '/')
16
- #
17
- # -p, --port PORT::
18
- # change server port (default: 3000)
19
- #
20
- # -e, --environment ENV::
21
- # change rails environment (default: development)
22
- #
23
- # -n --runtimes NUMBER::
24
- # Number of JRuby runtimes to crete initially
25
- #
26
- # --runtimes-min NUMBER::
27
- # Minimum JRuby runtimes to crete
28
- #
29
- # --runtimes-max NUMBER::
30
- # Maximum number of JRuby runtimes to crete
31
- #
32
- # APPLICATION_PATH (optional): Path to the application to be run (default: current).
48
+ require "java"
49
+ $LOAD_PATH << "#{File.dirname(__FILE__)}/../modules"
50
+ $LOAD_PATH << "#{File.dirname(__FILE__)}/../lib"
33
51
 
34
- require "java"
35
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../modules"
52
+ require 'command_line_parser'
53
+ require 'glassfish'
36
54
 
37
- require 'command_line_parser'
38
- require 'glassfish'
39
-
40
- options = CommandLineParser.new.parse
41
- gf = GlassFish::Server.new
42
- gf.startup(options)
55
+ options = GlassFish::CommandLineParser.new.parse
56
+ gf = GlassFish::Server.new
57
+ gf.startup(options)
data/bin/glassfish_rails CHANGED
@@ -1,42 +1,57 @@
1
- #!/usr/bin/env jruby
1
+ # == Synopsis
2
+ #
3
+ # glassfish: GlassFish v3 server for Rack based frameworks such as: Rails, Merb, Sinatra...
4
+ #
5
+ # == Usage:
6
+ #
7
+ # glassfish [OPTION] APPLICATION_PATH
8
+ #
9
+ # -h, --help::
10
+ # show help
11
+ #
12
+ # -c, --contextroot PATH::
13
+ # change the context root (default: '/')
14
+ #
15
+ # -p, --port PORT::
16
+ # change server port (default: 3000)
17
+ #
18
+ # -e, --environment ENV::
19
+ # change rails environment (default: development)
20
+ #
21
+ # -n --runtimes NUMBER::
22
+ # Number of JRuby runtimes to create initially
23
+ #
24
+ # --runtimes-min NUMBER::
25
+ # Minimum JRuby runtimes to create
26
+ #
27
+ # --runtimes-max NUMBER::
28
+ # Maximum number of JRuby runtimes to create
29
+ #
30
+ # -d, --daemon::
31
+ # Run GlassFish as daemon. Currently works with Linux and Solaris OS.
32
+ #
33
+ # -P, --pid FILE::
34
+ # PID file where PID will be written. Applicable when used with -d option. The default pid file is tmp/pids/glassfish-<PID>.pid
35
+ #
36
+ # -l, --log FILE::
37
+ # Log file, where the server log messages will go. By default the server logs go to log/glassfish.log file.
38
+ #
39
+ # --log-level LEVEL::
40
+ # Log level 0 to 7. 0:OFF, 1:SEVERE, 2:WARNING, 3:INFO (default), 4:FINE, 5:FINER, 6:FINEST, 7:ALL.
41
+ #
42
+ # --config FILE::
43
+ # Configuration file location. Use glassfish.yml as template. Generate it using 'gfrake config' command.
44
+ #
45
+ # APPLICATION_PATH (optional): Path to the application to be run (default: current).
46
+ # For further configuration, run GlassFish rake command 'gfrake -T'
2
47
 
3
- # == Synopsis
4
- #
5
- # glassfish: GlassFish v3 server for Rack based frameworks such as: rails, merb...
6
- #
7
- # == Usage:
8
- #
9
- # glassfish [OPTION] APPLICATION_PATH
10
- #
11
- # -h, --help::
12
- # show help
13
- #
14
- # -c, --contextroot PATH::
15
- # change the context root (default: '/')
16
- #
17
- # -p, --port PORT::
18
- # change server port (default: 3000)
19
- #
20
- # -e, --environment ENV::
21
- # change rails environment (default: development)
22
- #
23
- # -n --runtimes NUMBER::
24
- # Number of JRuby runtimes to crete initially
25
- #
26
- # --runtimes-min NUMBER::
27
- # Minimum JRuby runtimes to crete
28
- #
29
- # --runtimes-max NUMBER::
30
- # Maximum number of JRuby runtimes to crete
31
- #
32
- # APPLICATION_PATH (optional): Path to the application to be run (default: current).
48
+ require "java"
49
+ $LOAD_PATH << "#{File.dirname(__FILE__)}/../modules"
50
+ $LOAD_PATH << "#{File.dirname(__FILE__)}/../lib"
33
51
 
34
- require "java"
35
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../modules"
52
+ require 'command_line_parser'
53
+ require 'glassfish'
36
54
 
37
- require 'command_line_parser'
38
- require 'glassfish'
39
-
40
- options = CommandLineParser.new.parse
41
- gf = GlassFish::Server.new
42
- gf.startup(options)
55
+ options = GlassFish::CommandLineParser.new.parse
56
+ gf = GlassFish::Server.new
57
+ gf.startup(options)
@@ -76,7 +76,7 @@
76
76
  <jms-host host="laturbie.sfbay.sun.com" name="default_JMS_host"/>
77
77
  </jms-service>
78
78
 
79
- <log-service file="${com.sun.aas.instanceRoot}/logs/server.log" log-rotation-limit-in-bytes="2000000">
79
+ <log-service file="${jruby.log.location}" log-rotation-limit-in-bytes="2000000">
80
80
  <module-log-levels/>
81
81
  </log-service>
82
82
 
@@ -0,0 +1,7 @@
1
+ #
2
+ #GlassFish gem version file that goes inside the temporary domain.
3
+ #This is primarily used to determine if the temporary domain
4
+ #directory was created by the different version of gem.
5
+ #
6
+ glassfish:
7
+ version: 0.9.3
@@ -27,7 +27,7 @@
27
27
  # // implementation of Handler interface
28
28
  # }
29
29
 
30
- handlers= java.util.logging.ConsoleHandler
30
+ handlers=
31
31
 
32
32
  # To also add the FileHandler, use the following line instead.
33
33
  #handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
@@ -51,7 +51,7 @@ handlers= java.util.logging.ConsoleHandler
51
51
  # GlassFish will register this handler automtically as it is
52
52
  # and HK2 component like described above.
53
53
  # rotates the file based on time or size.
54
- com.sun.enterprise.server.logging.FileandSyslogHandler.file=logs/server.log
54
+ com.sun.enterprise.server.logging.FileandSyslogHandler.file=${jruby.log.location}
55
55
  # rotation time in minutes (takes precedence on size if defined),
56
56
  # 0 for no rotation based on time
57
57
  com.sun.enterprise.server.logging.FileandSyslogHandler.rotationTimelimitInMinutes=0
@@ -0,0 +1,97 @@
1
+ #
2
+ # GlassFish configuration.
3
+ #
4
+ # Please read the comments for each configuration settings before modifying.
5
+ #
6
+
7
+ # application environment. Default value development
8
+ environment: development
9
+
10
+
11
+ # HTTP configuration
12
+ http:
13
+
14
+ # port
15
+ port: 3000
16
+
17
+ # context root. The default value is '/'
18
+ contextroot: /
19
+
20
+
21
+ #Logging configuration
22
+ log:
23
+
24
+ # Log file location. Default log file is log/<environment>.log. For
25
+ # example, if you are running in development environment, then the log
26
+ # file would be log/development.log.
27
+ #
28
+ # The log-file value must be either an absolute path or relative to your
29
+ # application directory.
30
+
31
+ #log-file:
32
+
33
+ # Logging level. Log level 0 to 7. 0:OFF, 1:SEVERE, 2:WARNING,
34
+ # 3:INFO (default), 4:FINE, 5:FINER, 6:FINEST, 7:ALL.
35
+ log-level: 3
36
+
37
+ #
38
+ # Runtime configuration
39
+ # If you are using Rails ver < 2.1.x, you should configure the JRuby runtime
40
+ # pool for increased scalability.
41
+ jruby-runtime-pool:
42
+
43
+ # Initial number of jruby runtimes that Glassfish starts with. It defaults
44
+ # to one. It also represents the lowest value that Glassfish will use for
45
+ # the maximum and the highest value that Glassfish will accept for the
46
+ # minimum. As of this time, setting this number too high may cause
47
+ # undesirable behavior. Default value is .
48
+ initial: 1
49
+
50
+ # Minimum number of jruby runtimes that will be available in the pool.
51
+ # It defaults to one. The pool will always be at least this large, but
52
+ # may well be larger than this. Default value is 1.
53
+ min: 1
54
+
55
+
56
+ # Maximum number of jruby runtimes that may be available in the pool.
57
+ # It defaults to two. The pool will not neccessarily be this large.
58
+ # Values that are too high may result in OutOfMemory errors, either in
59
+ # the heap or in the PermGen. Default value is 1.
60
+ max: 1
61
+
62
+ daemon:
63
+ # Run GlassFish as a daemon. GlassFish may not run as a daemon process
64
+ # on all platforms. Default value is false.
65
+ enable: false
66
+
67
+ # File where the process id of GlassFish is saved when run as daemon.
68
+ # The location must be either an absolute path or relative to your
69
+ # application directory.
70
+ # default PID file is tmp/pids/glassfish-<PID>.pid
71
+
72
+ #pid:
73
+
74
+ # Like JRuby GlassFish gem runs on Java Virtual Machine. You can pass
75
+ # JVM properties using 'jvm-options' property. The JVM options must be
76
+ # SPACE seprated.
77
+ # 'jvm-options. property can ONLY be used only in daemon
78
+ # mode. The numbers below are to give an ideas. The numbers in your case
79
+ # would vary based on the hardware capabilities of machine you are
80
+ # running. See what is a server class machine
81
+ # http://java.sun.com/javase/6/docs/technotes/guides/vm/server-class.html
82
+
83
+ # GlassFish gem runs with these default options
84
+ #
85
+ #jvm-options: -server -Xmx512m -XX:MaxPermSize=192m -XX:NewRatio=2 -XX:+DisableExplicitGC -Dhk2.file.directory.changeIntervalTimer=6000
86
+
87
+ # Values below are given for a Sun Fire x4100, 4x Dual Core Opteron, 8G
88
+ # mem machine. You may like to changes these values according to the
89
+ # hardware you plan to run your application on. For details see
90
+ # JVM ergonomics document,
91
+ # http://java.sun.com/javase/6/docs/technotes/guides/vm/gc-ergonomics.html
92
+ #
93
+ #jvm-options: -server -Xmx2500m -Xms64m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:+DisableExplicitGC -Dhk2.file.directory.changeIntervalTimer=6000
94
+
95
+
96
+
97
+
File without changes
@@ -0,0 +1,226 @@
1
+ #--
2
+ #DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
+ #
4
+ #Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
5
+ #
6
+ #The contents of this file are subject to the terms of either the GNU
7
+ #General Public License Version 2 only ("GPL") or the Common Development
8
+ #and Distribution License("CDDL") (collectively, the "License"). You
9
+ #may not use this file except in compliance with the License. You can obtain
10
+ #a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
11
+ #or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
12
+ #language governing permissions and limitations under the License.
13
+ #
14
+ #When distributing the software, include this License Header Notice in each
15
+ #file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
16
+ #Sun designates this particular file as subject to the "Classpath" exception
17
+ #as provided by Sun in the GPL Version 2 section of the License file that
18
+ #accompanied this code. If applicable, add the following below the License
19
+ #Header, with the fields enclosed by brackets [] replaced by your own
20
+ #identifying information: "Portions Copyrighted [year]
21
+ #[name of copyright owner]"
22
+ #
23
+ #Contributor(s):
24
+ #
25
+ #If you wish your version of this file to be governed by only the CDDL or
26
+ #only the GPL Version 2, indicate your decision by adding "[Contributor]
27
+ #elects to include this software in this distribution under the [CDDL or GPL
28
+ #Version 2] license." If you don't indicate a single choice of license, a
29
+ #recipient has the option to distribute your version of this file under
30
+ #either the CDDL, the GPL Version 2 or to extend the choice of license to
31
+ #its licensees as provided above. However, if you add GPL Version 2 code
32
+ #and therefore, elected the GPL Version 2 license, then the option applies
33
+ #only if the new code is made subject to such option by the copyright
34
+ #holder.
35
+ #++
36
+
37
+ require 'rdoc_usage'
38
+ require 'getoptlong'
39
+ require 'pathname'
40
+ require 'config'
41
+ require 'java'
42
+
43
+ #
44
+ # Parses command line options
45
+ #
46
+ module GlassFish
47
+ class CommandLineParser
48
+
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 => Config::PID_FILE,
59
+ :log => nil,
60
+ :log_level => 1,
61
+ :daemon => false,
62
+ :jvm_options => nil
63
+ }
64
+ end
65
+
66
+ def parse
67
+
68
+ check_java
69
+
70
+ config = init_opts
71
+
72
+ opts = GetoptLong.new(
73
+ [ '--port', '-p', GetoptLong::REQUIRED_ARGUMENT ],
74
+ [ '--environment', '-e', GetoptLong::REQUIRED_ARGUMENT ],
75
+ [ '--contextroot', '-c', GetoptLong::REQUIRED_ARGUMENT ],
76
+ [ '--config', GetoptLong::REQUIRED_ARGUMENT ],
77
+ [ '--daemon', '-d', GetoptLong::NO_ARGUMENT ],
78
+ [ '--pid', '-P', GetoptLong::REQUIRED_ARGUMENT ],
79
+ [ '--log', '-l', GetoptLong::REQUIRED_ARGUMENT ],
80
+ [ '--log-level', GetoptLong::REQUIRED_ARGUMENT ],
81
+ [ '--runtimes', '-n', GetoptLong::REQUIRED_ARGUMENT ],
82
+ [ '--runtimes-min', GetoptLong::REQUIRED_ARGUMENT ],
83
+ [ '--runtimes-max', GetoptLong::REQUIRED_ARGUMENT ],
84
+ [ '--version', '-v', GetoptLong::NO_ARGUMENT ],
85
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ]
86
+ )
87
+
88
+ config_file = File.join(config[:app_dir], "config", "glassfish.yml")
89
+ opts.each do |opt, arg|
90
+ case opt
91
+ when '--version'
92
+ require 'version'
93
+ puts "#{GlassFish::FULLVERSION}"
94
+ exit(0)
95
+ when '--help'
96
+ RDoc::usage
97
+ when '--contextroot'
98
+ config[:contextroot] = arg
99
+ when '--port'
100
+ config[:port] = arg.to_i
101
+ when '--environment'
102
+ config[:environment] = arg
103
+ when '--runtimes'
104
+ config[:runtimes] = arg.to_i
105
+ when '--runtimes-min'
106
+ config[:runtimes_min] = arg.to_i
107
+ when '--runtimes-max'
108
+ config[:runtimes_max] = arg.to_i
109
+ when '--daemon'
110
+ config[:daemon] = true
111
+ when '--pid'
112
+ if(!ARGV.include?'-d' and !ARGV.include?'--daemon')
113
+ GlassFish::Config::fail("--pid option can only be used with --daemon.")
114
+ end
115
+ config[:pid] = arg
116
+ when '--log'
117
+ config[:log] = arg
118
+ when '--log-level'
119
+ config[:log_level] = arg.to_i
120
+ when '--config'
121
+ config_file = arg
122
+ end
123
+ end
124
+
125
+
126
+ config[:app_dir] = ARGV.shift unless ARGV.empty?
127
+
128
+ config[:log] = absolutize config[:app_dir], config[:log]
129
+ config[:pid] = absolutize config[:app_dir], config[:pid]
130
+ #Validate the command line options
131
+ Config.new.validate config
132
+
133
+ #Read the config file from config/glasfish.yml
134
+ config_file = absolutize config[:app_dir],config_file
135
+ read_glassfish_config(config_file, config)
136
+
137
+ config
138
+
139
+ end
140
+
141
+ private
142
+
143
+ # Read glassfish config file from config/glassfish.yml. CLI options will
144
+ # override the glassfish.yml configurations
145
+ def read_glassfish_config(cfile, config)
146
+
147
+ #If there is no config file we return
148
+ if(!File::exists?(cfile))
149
+ return config
150
+ end
151
+
152
+ puts "Parsing config file: #{cfile}"
153
+ data = YAML::load(File::open(cfile))
154
+
155
+ data.each do |opt, arg|
156
+ case opt
157
+ when 'http'
158
+ val = arg['port']
159
+ if(!val.nil?)
160
+ config[:port] = val.to_i
161
+ end
162
+
163
+ val = arg['contextroot']
164
+ config[:contextroot] = val unless val.nil?
165
+ when 'log'
166
+ val = arg['log-file']
167
+ if(!val.nil?)
168
+ config[:log] = absolutize config[:app_dir], val
169
+ end
170
+
171
+ val = arg['log-level']
172
+ config[:log_level] = val.to_i unless val.nil?
173
+ when 'jruby-runtime-pool'
174
+ config[:runtimes] = arg['initial'] unless arg['initial'].nil?
175
+ config[:runtimes_min] = arg['min'] unless arg['min'].nil?
176
+ config[:runtimes_max] = arg['max'] unless arg['max'].nil?
177
+ when 'daemon'
178
+ config[:daemon] = arg['enable'] unless arg['enable'].nil?
179
+ if(!arg['pid'].nil?)
180
+ if(!config[:daemon])
181
+ Config::fail("glassfish.yml has\n daemon:\n\tpid: #{arg['pid']}\nThe pid option can only be used when daemon is set enable: true.")
182
+ end
183
+ config[:pid] = absolutize config[:app_dir], arg['pid']
184
+ end
185
+
186
+ #CLI option are overriden by glassfish.yml settings
187
+ if(!data['daemon'].nil? and (data['daemon'] or config[:daemon]))
188
+ config[:jvm_options] = arg['jvm-options'] unless arg['jvm-options'].nil?
189
+ else
190
+ STDERR.puts "Ignoring JVM options #{arg}. JVM options can only be passed in daemon mode. To use these, enable daemon mode"
191
+ end
192
+ when 'environment'
193
+ config[:environment] = arg unless arg.nil?
194
+ end
195
+ end
196
+
197
+ #validate the options read from the config file
198
+ puts "Validating configuration read from glassfish.yml"
199
+ Config.new.validate config
200
+ end
201
+
202
+ def absolutize(base, path)
203
+ if path.nil?
204
+ return nil
205
+ end
206
+ p = Pathname.new path
207
+ if(!p.absolute?)
208
+ path = File.join(base, path)
209
+ end
210
+ path
211
+ end
212
+
213
+ def check_java
214
+ begin
215
+ java.lang.Class.forName("javax.xml.ws.Service")
216
+ rescue
217
+ #It is not Java6, fail
218
+ STDERR.puts "ERROR: You are running, Java version: "+java.lang.System.getProperty("java.version")+"."
219
+ STDERR.puts "ERROR: GlassFish gem needs Java ver. 6.0 or higher!"
220
+ puts "Please install JDK 6 from: http://java.sun.com/javase/downloads/index.jsp"
221
+ exit(1);
222
+ end
223
+ end
224
+
225
+ end
226
+ end