glassfish 0.9.2-universal-java → 0.9.3-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 (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