rubber 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/CHANGELOG +43 -5
  2. data/Rakefile +67 -35
  3. data/lib/rubber/recipes/rubber/setup.rb +4 -4
  4. data/lib/rubber/recipes/rubber/volumes.rb +2 -1
  5. data/lib/rubber/version.rb +1 -1
  6. data/rubber.gemspec +2 -0
  7. data/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +1 -1
  8. data/templates/apache/config/rubber/role/web_tools/tools-index.html +1 -1
  9. data/templates/cassandra/config/rubber/deploy-cassandra.rb +1 -1
  10. data/templates/collectd/config/rubber/deploy-collectd.rb +1 -1
  11. data/templates/complete_passenger_nginx/config/rubber/rubber-complete.yml +1 -0
  12. data/templates/elasticsearch/config/rubber/deploy-elasticsearch.rb +1 -1
  13. data/templates/graphite/config/rubber/deploy-graphite.rb +2 -2
  14. data/templates/graylog/config/rubber/deploy-graylog.rb +2 -2
  15. data/templates/jenkins/config/rubber/deploy-jenkins.rb +1 -1
  16. data/templates/mongodb/config/rubber/deploy-mongodb.rb +1 -1
  17. data/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +3 -3
  18. data/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf +1 -1
  19. data/templates/redis/config/rubber/deploy-redis.rb +1 -1
  20. data/templates/torquebox/config/rubber/deploy-torquebox.rb +104 -0
  21. data/templates/torquebox/config/rubber/role/app/mod_manager.load +5 -0
  22. data/templates/torquebox/config/rubber/role/app/mod_proxy_cluster.conf +7 -0
  23. data/templates/torquebox/config/rubber/role/app/mod_proxy_cluster.load +5 -0
  24. data/templates/torquebox/config/rubber/role/app/mod_slotmem.load +5 -0
  25. data/templates/torquebox/config/rubber/role/app/torquebox-apache-vhost.conf +102 -0
  26. data/templates/torquebox/config/rubber/role/torquebox/monit-torquebox.conf +8 -0
  27. data/templates/torquebox/config/rubber/role/torquebox/standalone-ha.xml +616 -0
  28. data/templates/torquebox/config/rubber/role/torquebox/standalone.conf +83 -0
  29. data/templates/torquebox/config/rubber/role/torquebox/torquebox-upstart.conf +23 -0
  30. data/templates/torquebox/config/rubber/rubber-torquebox.yml +16 -0
  31. data/templates/torquebox/templates.yml +3 -0
  32. data/templates/zookeeper/config/rubber/deploy-zookeeper.rb +1 -1
  33. metadata +32 -4
@@ -0,0 +1,104 @@
1
+ namespace :rubber do
2
+
3
+ namespace :torquebox do
4
+
5
+ rubber.allow_optional_tasks(self)
6
+
7
+ after "rubber:install_packages", "rubber:torquebox:custom_install"
8
+
9
+ task :custom_install, :roles => :torquebox do
10
+ rubber.sudo_script 'install_torquebox', <<-ENDSCRIPT
11
+ if [[ -z `ls #{rubber_env.torquebox_prefix}/torquebox-#{rubber_env.torquebox_version} 2> /dev/null` ]]; then
12
+ wget -q http://torquebox.org/release/org/torquebox/torquebox-dist/#{rubber_env.torquebox_version}/torquebox-dist-#{rubber_env.torquebox_version}-bin.zip
13
+ unzip -d #{rubber_env.torquebox_prefix} torquebox-dist-#{rubber_env.torquebox_version}-bin.zip &> /dev/null
14
+ chown -R #{rubber_env.app_user} #{rubber_env.torquebox_prefix}/torquebox-#{rubber_env.torquebox_version}
15
+
16
+ # Install to appropriate location.
17
+ rm -f #{rubber_env.torquebox_dir}
18
+ ln -s #{rubber_env.torquebox_prefix}/torquebox-#{rubber_env.torquebox_version} #{rubber_env.torquebox_dir}
19
+
20
+ # Cleanup after ourselves.
21
+ rm torquebox-dist-#{rubber_env.torquebox_version}-bin.zip
22
+ fi
23
+ ENDSCRIPT
24
+ end
25
+
26
+ after "rubber:install_packages", "rubber:torquebox:install_mod_cluster"
27
+
28
+ task :install_mod_cluster, :roles => :app do
29
+ rubber.sudo_script 'install_mod_cluster', <<-ENDSCRIPT
30
+ if [[ ! -f /usr/lib/apache2/modules/mod_proxy_cluster.so ]]; then
31
+ wget -q http://downloads.jboss.org/mod_cluster/#{rubber_env.mod_cluster_version}.Final/mod_cluster-#{rubber_env.mod_cluster_version}.Final-linux2-x64-so.tar.gz
32
+ tar -zxf mod_cluster-#{rubber_env.mod_cluster_version}.Final-linux2-x64-so.tar.gz
33
+
34
+ # Install to appropriate locations
35
+ chmod 644 mod_*.so
36
+ mv mod_*.so /usr/lib/apache2/modules/
37
+
38
+ # Cleanup after ourselves.
39
+ rm mod_cluster-#{rubber_env.mod_cluster_version}.Final-linux2-x64-so.tar.gz
40
+ fi
41
+ ENDSCRIPT
42
+ end
43
+
44
+ # serial_task can only be called after roles defined - not normally a problem, but
45
+ # rubber auto-roles don't get defined till after all tasks are defined
46
+ on :load do
47
+ rubber.serial_task self, :serial_reload, :roles => [:torquebox] do
48
+ rsudo "touch #{jboss_home}/standalone/deployments/#{application}-knob.yml.dodeploy"
49
+
50
+ # Wait for TorqueBox to startup before moving on so we don't remove all hosts from the cluster.
51
+ logger.info "Waiting for TorqueBox to startup"
52
+
53
+ #rsudo "while ! curl -s -f http://$HOSTNAME:#{rubber_env.torquebox_http_port} &> /dev/null; do echo .; sleep 1; done"
54
+
55
+ # TorqueBox first "deploys" the app, then lets the web context startup. While it's deploying,
56
+ # the old context can still service requests. So, we need to wait until the app is deployed before we can
57
+ # start checking if it's handling web requests. Once it's deployed and web requests are being served we can move on.
58
+ rsudo "while ls #{jboss_home}/standalone/deployments/#{application}-knob.yml.dodeploy &> /dev/null; do echo .; sleep 1; done"
59
+ rsudo "while ! curl -s -f http://$HOSTNAME:#{rubber_env.torquebox_http_port} &> /dev/null; do echo .; sleep 1; done"
60
+ end
61
+ end
62
+
63
+ after "rubber:deploy:cold", "rubber:torquebox:install_backstage"
64
+
65
+ task :install_backstage, :roles => :app do
66
+ rsudo "backstage deploy --secure=#{rubber_env.backstage_user}:#{rubber_env.backstage_password}"
67
+ end
68
+
69
+ after "rubber:setup_app_permissions", "rubber:torquebox:setup_app_permissions"
70
+
71
+ task :setup_app_permissions do
72
+ rsudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/public"
73
+ rsudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/tmp"
74
+ end
75
+
76
+ before "deploy:finalize_update", "rubber:torquebox:create_cache_directory"
77
+
78
+ task :create_cache_directory do
79
+ rsudo "mkdir #{shared_path}/cache || true"
80
+ rsudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{shared_path}/cache"
81
+ end
82
+
83
+ task :restart, :roles => :torquebox do
84
+ stop
85
+ start
86
+ end
87
+
88
+ task :stop, :roles => :torquebox do
89
+ rsudo "service torquebox stop || true"
90
+ end
91
+
92
+ task :start, :roles => :torquebox do
93
+ rsudo "service torquebox start || true"
94
+ end
95
+
96
+ after "deploy:restart", "rubber:torquebox:reload"
97
+
98
+ desc "Reloads the apache web server"
99
+ task :reload, :roles => :torquebox do
100
+ serial_reload
101
+ end
102
+
103
+ end
104
+ end
@@ -0,0 +1,5 @@
1
+ <%
2
+ @path = '/etc/apache2/mods-available/manager.load'
3
+ @post = 'a2enmod manager'
4
+ %>
5
+ LoadModule manager_module /usr/lib/apache2/modules/mod_manager.so
@@ -0,0 +1,7 @@
1
+ <%
2
+ @path = '/etc/apache2/mods-available/proxy_cluster.conf'
3
+ @post = 'service apache2 reload'
4
+ %>
5
+
6
+ # Create in all VirtualHosts.
7
+ CreateBalancers 0
@@ -0,0 +1,5 @@
1
+ <%
2
+ @path = '/etc/apache2/mods-available/proxy_cluster.load'
3
+ @post = 'a2enmod proxy_cluster && a2enmod proxy_ajp'
4
+ %>
5
+ LoadModule proxy_cluster_module /usr/lib/apache2/modules/mod_proxy_cluster.so
@@ -0,0 +1,5 @@
1
+ <%
2
+ @path = '/etc/apache2/mods-available/slotmem.load'
3
+ @post = 'a2enmod slotmem && rm -f /etc/apache2/logs && ln -s /var/log/apache2 /etc/apache2/logs'
4
+ %>
5
+ LoadModule slotmem_module /usr/lib/apache2/modules/mod_slotmem.so
@@ -0,0 +1,102 @@
1
+ <%
2
+ @path = "/etc/apache2/sites-available/#{rubber_env.app_name}-passenger"
3
+ @post = "a2enmod rewrite && a2enmod ssl && a2enmod expires && a2enmod xsendfile && a2ensite #{rubber_env.app_name}"
4
+ %>
5
+
6
+ NameVirtualHost *:<%= rubber_env.apache_listen_port %>
7
+
8
+ <% [rubber_env.apache_listen_port, rubber_env.apache_listen_ssl_port].each do |port| %>
9
+ Listen <%= port %>
10
+ <VirtualHost *:<%= port %>>
11
+ ServerName <%= rubber_env.domain %>
12
+ <%- if rubber_env.web_aliases -%>
13
+ ServerAlias <%= rubber_env.web_aliases.join(" ") %>
14
+ <%- end -%>
15
+ DocumentRoot <%= Rubber.root + "/public" %>
16
+
17
+ ErrorDocument 404 /404.html
18
+ ErrorDocument 500 /500.html
19
+
20
+ SetEnvIf User-Agent "^(.*MSIE.*)|(.*AppleWebKit.*)$" nokeepalive
21
+
22
+ # Don't show haproxy checks in access log (see also apache2.conf)
23
+ SetEnvIf Request_URI "^/httpchk.txt$" dontlog
24
+
25
+ RailsEnv <%= Rubber.env %>
26
+
27
+ XSendFile on
28
+
29
+ RewriteEngine On
30
+ RewriteCond %{HTTP_HOST} ^<%= rubber_env.domain %>$
31
+ RewriteRule ^(.*)$ http://www.<%= rubber_env.domain %>$1 [R,L]
32
+
33
+ # Include <%= Rubber.root %>/config/apache/rewrites.conf
34
+
35
+ RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
36
+ RewriteCond %{SCRIPT_FILENAME} !maintenance.html
37
+ RewriteRule ^.*$ /system/maintenance.html [L]
38
+
39
+ <% if Rubber::Util.has_asset_pipeline? %>
40
+ <LocationMatch "^/assets/.*$">
41
+ Header unset ETag
42
+ FileETag None
43
+
44
+ # RFC says only cache for 1 year.
45
+ ExpiresActive On
46
+ ExpiresDefault "access plus 1 year"
47
+
48
+ # Cache the resource even if SSL is in use.
49
+ Header merge Cache-Control public
50
+
51
+ SetEnv no-gzip
52
+ </LocationMatch>
53
+
54
+ # Serve the gzip'd assets directly from disk if they were generated by Sprockets.
55
+ # This avoids gzipping the asset on the fly by Apache and Sprockets will usually use a higher level
56
+ # of compression than mod_deflate will, yielding savings all around.
57
+
58
+ RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b
59
+ RewriteCond <%= Rubber.root + "/public" %>%{REQUEST_FILENAME}.gz -s
60
+ RewriteRule ^(.+) $1.gz [L]
61
+
62
+ <FilesMatch \.css\.gz$>
63
+ ForceType text/css
64
+ Header set Content-Encoding gzip
65
+ </FilesMatch>
66
+
67
+ <FilesMatch \.js\.gz$>
68
+ ForceType text/javascript
69
+ Header set Content-Encoding gzip
70
+ </FilesMatch>
71
+ <% end %>
72
+
73
+ <% if port == rubber_env.passenger_listen_ssl_port %>
74
+ SSLEngine on
75
+ SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
76
+ SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
77
+ SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
78
+ # SSLCertificateFile <%= Rubber.root %>/config/<%= rubber_env.domain %>.crt
79
+ # SSLCertificateKeyFile <%= Rubber.root %>/config/<%= rubber_env.domain %>.key
80
+ # SSLCertificateChainFile /etc/ssl/certs/gd_intermediate_bundle.crt
81
+
82
+ SSLHonorCipherOrder On
83
+ SSLCipherSuite ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM
84
+ <% end %>
85
+
86
+ # Show additional information in mod_cluster-manager.
87
+ AllowDisplay On
88
+
89
+ # Enable receiving TorqueBox node registration requests.
90
+ EnableMCPMReceive
91
+
92
+ # Enabled the mod_cluster manager.
93
+ <Location /mod_cluster-manager>
94
+ SetHandler mod_cluster-manager
95
+ Order deny,allow
96
+ Deny from all
97
+ Allow from 127.0.0.1
98
+ </Location>
99
+ </VirtualHost>
100
+
101
+ <% end %>
102
+
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-torquebox.conf'
3
+ %>
4
+ check process torquebox with pidfile <%= rubber_env.torquebox_pid_file %>
5
+ group torquebox-<%= Rubber.env %>
6
+ start program = "/usr/bin/env service torquebox start"
7
+ stop program = "/usr/bin/env service torquebox stop"
8
+ if failed host <%= rubber_env.host %> port <%= rubber_env.torquebox_http_port %> with timeout 10 seconds for 20 cycles then restart
@@ -0,0 +1,616 @@
1
+ <%
2
+ @path = "#{rubber_env.torquebox_dir}/jboss/standalone/configuration/standalone-ha.xml"
3
+ %><?xml version='1.0' encoding='UTF-8'?>
4
+ <server xmlns='urn:jboss:domain:1.2'>
5
+ <extensions>
6
+ <extension module='org.jboss.as.clustering.infinispan'/>
7
+ <extension module='org.jboss.as.clustering.jgroups'/>
8
+ <extension module='org.jboss.as.cmp'/>
9
+ <extension module='org.jboss.as.configadmin'/>
10
+ <extension module='org.jboss.as.connector'/>
11
+ <extension module='org.jboss.as.deployment-scanner'/>
12
+ <extension module='org.jboss.as.ee'/>
13
+ <extension module='org.jboss.as.ejb3'/>
14
+ <extension module='org.jboss.as.jacorb'/>
15
+ <extension module='org.jboss.as.jaxr'/>
16
+ <extension module='org.jboss.as.jaxrs'/>
17
+ <extension module='org.jboss.as.jdr'/>
18
+ <extension module='org.jboss.as.jmx'/>
19
+ <extension module='org.jboss.as.jpa'/>
20
+ <extension module='org.jboss.as.jsr77'/>
21
+ <extension module='org.jboss.as.logging'/>
22
+ <extension module='org.jboss.as.mail'/>
23
+ <extension module='org.jboss.as.messaging'/>
24
+ <extension module='org.jboss.as.modcluster'/>
25
+ <extension module='org.jboss.as.naming'/>
26
+ <extension module='org.jboss.as.osgi'/>
27
+ <extension module='org.jboss.as.pojo'/>
28
+ <extension module='org.jboss.as.remoting'/>
29
+ <extension module='org.jboss.as.sar'/>
30
+ <extension module='org.jboss.as.security'/>
31
+ <extension module='org.jboss.as.threads'/>
32
+ <extension module='org.jboss.as.transactions'/>
33
+ <extension module='org.jboss.as.web'/>
34
+ <extension module='org.jboss.as.webservices'/>
35
+ <extension module='org.jboss.as.weld'/>
36
+ <extension module='org.torquebox.bootstrap'/>
37
+ <extension module='org.torquebox.core'/>
38
+ <extension module='org.torquebox.services'/>
39
+ <extension module='org.torquebox.security'/>
40
+ <extension module='org.torquebox.jobs'/>
41
+ <extension module='org.torquebox.stomp'/>
42
+ <extension module='org.torquebox.messaging'/>
43
+ <extension module='org.torquebox.cdi'/>
44
+ <extension module='org.torquebox.web'/>
45
+ <extension module='org.torquebox.cache'/>
46
+ <extension module='org.projectodd.polyglot.hasingleton'/>
47
+ </extensions>
48
+ <system-properties>
49
+ <property name='org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR' value='false'/>
50
+ <property name='org.apache.tomcat.util.net.WAIT_FOR_THREAD' value='false'/>
51
+ </system-properties>
52
+ <management>
53
+ <security-realms>
54
+ <security-realm name='ManagementRealm'>
55
+ <authentication>
56
+ <properties path='mgmt-users.properties' relative-to='jboss.server.config.dir'/>
57
+ </authentication>
58
+ </security-realm>
59
+ <security-realm name='ApplicationRealm'>
60
+ <authentication>
61
+ <properties path='application-users.properties' relative-to='jboss.server.config.dir'/>
62
+ </authentication>
63
+ </security-realm>
64
+ </security-realms>
65
+ <management-interfaces>
66
+ <native-interface>
67
+ <socket-binding native='management-native'/>
68
+ </native-interface>
69
+ <http-interface>
70
+ <socket-binding http='management-http'/>
71
+ </http-interface>
72
+ </management-interfaces>
73
+ </management>
74
+ <profile>
75
+ <subsystem xmlns='urn:jboss:domain:logging:1.1'>
76
+ <console-handler name='CONSOLE'>
77
+ <level name='INFO'/>
78
+ <formatter>
79
+ <pattern-formatter pattern='%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n'/>
80
+ </formatter>
81
+ </console-handler>
82
+ <periodic-rotating-file-handler name='FILE'>
83
+ <formatter>
84
+ <pattern-formatter pattern='%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n'/>
85
+ </formatter>
86
+ <file relative-to='jboss.server.log.dir' path='server.log'/>
87
+ <suffix value='.yyyy-MM-dd'/>
88
+ <append value='true'/>
89
+ </periodic-rotating-file-handler>
90
+ <logger category='com.arjuna'>
91
+ <level name='WARN'/>
92
+ </logger>
93
+ <logger category='org.apache.tomcat.util.modeler'>
94
+ <level name='WARN'/>
95
+ </logger>
96
+ <logger category='sun.rmi'>
97
+ <level name='WARN'/>
98
+ </logger>
99
+ <logger category='jacorb'>
100
+ <level name='WARN'/>
101
+ </logger>
102
+ <logger category='jacorb.config'>
103
+ <level name='ERROR'/>
104
+ </logger>
105
+ <root-logger>
106
+ <level name='INFO'/>
107
+ <handlers>
108
+ <handler name='CONSOLE'/>
109
+ <handler name='FILE'/>
110
+ </handlers>
111
+ </root-logger>
112
+ <logger category='org.jboss.jca.adapters.jdbc.extensions.mysql'>
113
+ <level name='ERROR'/>
114
+ </logger>
115
+ </subsystem>
116
+ <subsystem xmlns='urn:jboss:domain:cmp:1.0'/>
117
+ <subsystem xmlns='urn:jboss:domain:configadmin:1.0'/>
118
+ <subsystem xmlns='urn:jboss:domain:datasources:1.0'>
119
+ <datasources>
120
+ <datasource jndi-name='java:jboss/datasources/ExampleDS' pool-name='ExampleDS' enabled='true' use-java-context='true'>
121
+ <connection-url>
122
+ jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
123
+ </connection-url>
124
+ <driver>
125
+ h2
126
+ </driver>
127
+ <security>
128
+ <user-name>
129
+ sa
130
+ </user-name>
131
+ <password>
132
+ sa
133
+ </password>
134
+ </security>
135
+ </datasource>
136
+ <drivers>
137
+ <driver name='h2' module='com.h2database.h2'>
138
+ <xa-datasource-class>
139
+ org.h2.jdbcx.JdbcDataSource
140
+ </xa-datasource-class>
141
+ </driver>
142
+ </drivers>
143
+ </datasources>
144
+ </subsystem>
145
+ <subsystem xmlns='urn:jboss:domain:deployment-scanner:1.1'>
146
+ <deployment-scanner path='deployments' relative-to='jboss.server.base.dir' scan-interval='5000' deployment-timeout='1200'/>
147
+ </subsystem>
148
+ <subsystem xmlns='urn:jboss:domain:ee:1.0'/>
149
+ <subsystem xmlns='urn:jboss:domain:ejb3:1.2'>
150
+ <session-bean>
151
+ <stateless>
152
+ <bean-instance-pool-ref pool-name='slsb-strict-max-pool'/>
153
+ </stateless>
154
+ <stateful default-access-timeout='5000' cache-ref='simple' clustered-cache-ref='clustered'/>
155
+ <singleton default-access-timeout='5000'/>
156
+ </session-bean>
157
+ <mdb>
158
+ <resource-adapter-ref resource-adapter-name='hornetq-ra'/>
159
+ <bean-instance-pool-ref pool-name='mdb-strict-max-pool'/>
160
+ </mdb>
161
+ <pools>
162
+ <bean-instance-pools>
163
+ <strict-max-pool name='slsb-strict-max-pool' max-pool-size='20' instance-acquisition-timeout='5' instance-acquisition-timeout-unit='MINUTES'/>
164
+ <strict-max-pool name='mdb-strict-max-pool' max-pool-size='20' instance-acquisition-timeout='5' instance-acquisition-timeout-unit='MINUTES'/>
165
+ </bean-instance-pools>
166
+ </pools>
167
+ <caches>
168
+ <cache name='simple' aliases='NoPassivationCache'/>
169
+ <cache name='passivating' passivation-store-ref='file' aliases='SimpleStatefulCache'/>
170
+ <cache name='clustered' passivation-store-ref='infinispan' aliases='StatefulTreeCache'/>
171
+ </caches>
172
+ <passivation-stores>
173
+ <file-passivation-store name='file'/>
174
+ <cluster-passivation-store name='infinispan' cache-container='ejb'/>
175
+ </passivation-stores>
176
+ <async thread-pool-name='default'/>
177
+ <timer-service thread-pool-name='default'>
178
+ <data-store path='timer-service-data' relative-to='jboss.server.data.dir'/>
179
+ </timer-service>
180
+ <remote connector-ref='remoting-connector' thread-pool-name='default'/>
181
+ <thread-pools>
182
+ <thread-pool name='default'>
183
+ <max-threads count='10'/>
184
+ <keepalive-time time='100' unit='milliseconds'/>
185
+ </thread-pool>
186
+ </thread-pools>
187
+ <iiop enable-by-default='false' use-qualified-name='false'/>
188
+ </subsystem>
189
+ <subsystem xmlns='urn:jboss:domain:infinispan:1.2' default-cache-container='cluster'>
190
+ <cache-container name='cluster' aliases='ha-partition' default-cache='default'>
191
+ <transport lock-timeout='60000'/>
192
+ <replicated-cache name='default' mode='SYNC' batching='true'>
193
+ <locking isolation='REPEATABLE_READ'/>
194
+ </replicated-cache>
195
+ </cache-container>
196
+ <cache-container name='web' aliases='torquebox standard-session-cache' default-cache='repl'>
197
+ <transport lock-timeout='60000'/>
198
+ <replicated-cache name='repl' mode='ASYNC' batching='true'>
199
+ <file-store/>
200
+ </replicated-cache>
201
+ <replicated-cache name='sso' mode='SYNC' batching='true'/>
202
+ <distributed-cache name='dist' mode='ASYNC' batching='true'>
203
+ <file-store/>
204
+ </distributed-cache>
205
+ </cache-container>
206
+ <cache-container name='ejb' aliases='sfsb sfsb-cache' default-cache='repl'>
207
+ <transport lock-timeout='60000'/>
208
+ <replicated-cache name='repl' mode='ASYNC' batching='true'>
209
+ <eviction strategy='LRU'/>
210
+ <file-store/>
211
+ </replicated-cache>
212
+ <!--
213
+ ~ Clustered cache used internally by EJB subsytem for managing the client-mapping(s) of
214
+ ~ the socketbinding referenced by the EJB remoting connector
215
+ -->
216
+ <replicated-cache name='remote-connector-client-mappings' mode='SYNC' batching='true'/>
217
+ <distributed-cache name='dist' mode='ASYNC' batching='true'>
218
+ <eviction strategy='LRU'/>
219
+ <file-store/>
220
+ </distributed-cache>
221
+ </cache-container>
222
+ <cache-container name='hibernate' default-cache='local-query'>
223
+ <transport lock-timeout='60000'/>
224
+ <local-cache name='local-query'>
225
+ <transaction mode='NONE'/>
226
+ <eviction strategy='LRU' max-entries='10000'/>
227
+ <expiration max-idle='100000'/>
228
+ </local-cache>
229
+ <invalidation-cache name='entity' mode='SYNC'>
230
+ <transaction mode='NON_XA'/>
231
+ <eviction strategy='LRU' max-entries='10000'/>
232
+ <expiration max-idle='100000'/>
233
+ </invalidation-cache>
234
+ <replicated-cache name='timestamps' mode='ASYNC'>
235
+ <transaction mode='NONE'/>
236
+ <eviction strategy='NONE'/>
237
+ </replicated-cache>
238
+ </cache-container>
239
+ </subsystem>
240
+ <subsystem xmlns='urn:jboss:domain:jacorb:1.1'>
241
+ <orb>
242
+ <initializers transactions='spec' security='on'/>
243
+ </orb>
244
+ </subsystem>
245
+ <subsystem xmlns='urn:jboss:domain:jaxr:1.1'>
246
+ <connection-factory jndi-name='java:jboss/jaxr/ConnectionFactory'/>
247
+ </subsystem>
248
+ <subsystem xmlns='urn:jboss:domain:jaxrs:1.0'/>
249
+ <subsystem xmlns='urn:jboss:domain:jca:1.1'>
250
+ <archive-validation enabled='true' fail-on-error='true' fail-on-warn='false'/>
251
+ <bean-validation enabled='true'/>
252
+ <default-workmanager>
253
+ <short-running-threads>
254
+ <core-threads count='50'/>
255
+ <queue-length count='50'/>
256
+ <max-threads count='50'/>
257
+ <keepalive-time time='10' unit='seconds'/>
258
+ </short-running-threads>
259
+ <long-running-threads>
260
+ <core-threads count='50'/>
261
+ <queue-length count='50'/>
262
+ <max-threads count='50'/>
263
+ <keepalive-time time='10' unit='seconds'/>
264
+ </long-running-threads>
265
+ </default-workmanager>
266
+ <cached-connection-manager/>
267
+ </subsystem>
268
+ <subsystem xmlns='urn:jboss:domain:jdr:1.0'/>
269
+ <subsystem xmlns='urn:jboss:domain:jgroups:1.1' default-stack='tcp'>
270
+ <stack name='udp'>
271
+ <transport type='UDP' socket-binding='jgroups-udp' diagnostics-socket-binding='jgroups-diagnostics'/>
272
+ <protocol type='PING'/>
273
+ <protocol type='MERGE2'/>
274
+ <protocol type='FD_SOCK' socket-binding='jgroups-udp-fd'/>
275
+ <protocol type='FD'/>
276
+ <protocol type='VERIFY_SUSPECT'/>
277
+ <protocol type='BARRIER'/>
278
+ <protocol type='pbcast.NAKACK'/>
279
+ <protocol type='UNICAST2'/>
280
+ <protocol type='pbcast.STABLE'/>
281
+ <protocol type='pbcast.GMS'/>
282
+ <protocol type='UFC'/>
283
+ <protocol type='MFC'/>
284
+ <protocol type='FRAG2'/>
285
+ </stack>
286
+ <stack name='tcp'>
287
+ <transport type='TCP' socket-binding='jgroups-tcp' diagnostics-socket-binding='jgroups-diagnostics'/>
288
+ <protocol type="TCPPING">
289
+ <property name="initial_hosts">
290
+ <%= rubber_instances.for_role('torquebox').collect { |host| "#{host.full_name}[7600]" }.join(',') %>
291
+ </property>
292
+ </protocol>
293
+ <protocol type='MPING' socket-binding='jgroups-mping'/>
294
+ <protocol type='MERGE2'/>
295
+ <protocol type='FD_SOCK' socket-binding='jgroups-tcp-fd'/>
296
+ <protocol type='FD'/>
297
+ <protocol type='VERIFY_SUSPECT'/>
298
+ <protocol type='BARRIER'/>
299
+ <protocol type='pbcast.NAKACK'/>
300
+ <protocol type='UNICAST2'/>
301
+ <protocol type='pbcast.STABLE'/>
302
+ <protocol type='pbcast.GMS'/>
303
+ <protocol type='UFC'/>
304
+ <protocol type='MFC'/>
305
+ <protocol type='FRAG2'/>
306
+ </stack>
307
+ </subsystem>
308
+ <subsystem xmlns='urn:jboss:domain:jmx:1.1'>
309
+ <show-model value='true'/>
310
+ <remoting-connector/>
311
+ </subsystem>
312
+ <subsystem xmlns='urn:jboss:domain:jpa:1.0'>
313
+ <jpa default-datasource=''/>
314
+ </subsystem>
315
+ <subsystem xmlns='urn:jboss:domain:jsr77:1.0'/>
316
+ <subsystem xmlns='urn:jboss:domain:mail:1.0'>
317
+ <mail-session jndi-name='java:jboss/mail/Default'>
318
+ <smtp-server outbound-socket-binding-ref='mail-smtp'/>
319
+ </mail-session>
320
+ </subsystem>
321
+ <subsystem xmlns='urn:jboss:domain:messaging:1.1'>
322
+ <hornetq-server>
323
+ <clustered>
324
+ true
325
+ </clustered>
326
+ <persistence-enabled>
327
+ true
328
+ </persistence-enabled>
329
+ <journal-file-size>
330
+ 102400
331
+ </journal-file-size>
332
+ <journal-min-files>
333
+ 2
334
+ </journal-min-files>
335
+ <connectors>
336
+ <netty-connector name='netty' socket-binding='messaging'/>
337
+ <netty-connector name='netty-throughput' socket-binding='messaging-throughput'>
338
+ <param key='batch-delay' value='50'/>
339
+ </netty-connector>
340
+ <in-vm-connector name='in-vm' server-id='0'/>
341
+ </connectors>
342
+ <acceptors>
343
+ <netty-acceptor name='netty' socket-binding='messaging'/>
344
+ <netty-acceptor name='netty-throughput' socket-binding='messaging-throughput'>
345
+ <param key='batch-delay' value='50'/>
346
+ <param key='direct-deliver' value='false'/>
347
+ </netty-acceptor>
348
+ <in-vm-acceptor name='in-vm' server-id='0'/>
349
+ </acceptors>
350
+ <broadcast-groups>
351
+ <broadcast-group name='bg-group1'>
352
+ <broadcast-period>
353
+ 5000
354
+ </broadcast-period>
355
+ <connector-ref>
356
+ netty
357
+ </connector-ref>
358
+ <socket-binding>
359
+ messaging-group
360
+ </socket-binding>
361
+ </broadcast-group>
362
+ </broadcast-groups>
363
+ <discovery-groups>
364
+ <discovery-group name='dg-group1'>
365
+ <refresh-timeout>
366
+ 10000
367
+ </refresh-timeout>
368
+ <socket-binding>
369
+ messaging-group
370
+ </socket-binding>
371
+ </discovery-group>
372
+ </discovery-groups>
373
+ <cluster-connections>
374
+ <cluster-connection name='my-cluster'>
375
+ <address>
376
+ jms
377
+ </address>
378
+ <connector-ref>
379
+ netty
380
+ </connector-ref>
381
+ <discovery-group-ref discovery-group-name='dg-group1'/>
382
+ </cluster-connection>
383
+ </cluster-connections>
384
+ <security-settings>
385
+ <security-setting match='#'>
386
+ <permission type='send' roles='guest'/>
387
+ <permission type='consume' roles='guest'/>
388
+ <permission type='createNonDurableQueue' roles='guest'/>
389
+ <permission type='deleteNonDurableQueue' roles='guest'/>
390
+ </security-setting>
391
+ </security-settings>
392
+ <address-settings>
393
+ <!--default for catch all-->
394
+ <address-setting match='#'>
395
+ <dead-letter-address>
396
+ jms.queue.DLQ
397
+ </dead-letter-address>
398
+ <expiry-address>
399
+ jms.queue.ExpiryQueue
400
+ </expiry-address>
401
+ <redelivery-delay>
402
+ 0
403
+ </redelivery-delay>
404
+ <redistribution-delay>
405
+ 1000
406
+ </redistribution-delay>
407
+ <max-size-bytes>
408
+ 20971520
409
+ </max-size-bytes>
410
+ <address-full-policy>
411
+ PAGE
412
+ </address-full-policy>
413
+ <message-counter-history-day-limit>
414
+ 10
415
+ </message-counter-history-day-limit>
416
+ </address-setting>
417
+ </address-settings>
418
+ <jms-connection-factories>
419
+ <connection-factory name='InVmConnectionFactory'>
420
+ <connectors>
421
+ <connector-ref connector-name='in-vm'/>
422
+ </connectors>
423
+ <entries>
424
+ <entry name='java:/ConnectionFactory'/>
425
+ </entries>
426
+ <consumer-window-size>
427
+ 1
428
+ </consumer-window-size>
429
+ </connection-factory>
430
+ <connection-factory name='RemoteConnectionFactory'>
431
+ <connectors>
432
+ <connector-ref connector-name='netty'/>
433
+ </connectors>
434
+ <entries>
435
+ <entry name='RemoteConnectionFactory'/>
436
+ <entry name='java:jboss/exported/jms/RemoteConnectionFactory'/>
437
+ </entries>
438
+ <consumer-window-size>
439
+ 1
440
+ </consumer-window-size>
441
+ </connection-factory>
442
+ <pooled-connection-factory name='hornetq-ra'>
443
+ <transaction mode='xa'/>
444
+ <connectors>
445
+ <connector-ref connector-name='in-vm'/>
446
+ </connectors>
447
+ <entries>
448
+ <entry name='java:/JmsXA'/>
449
+ </entries>
450
+ </pooled-connection-factory>
451
+ </jms-connection-factories>
452
+ <jms-destinations>
453
+ </jms-destinations>
454
+ <cluster-user>
455
+ admin
456
+ </cluster-user>
457
+ <cluster-password>
458
+ password
459
+ </cluster-password>
460
+ <jmx-management-enabled>
461
+ true
462
+ </jmx-management-enabled>
463
+ <security-enabled>
464
+ false
465
+ </security-enabled>
466
+ </hornetq-server>
467
+ </subsystem>
468
+ <subsystem xmlns='urn:jboss:domain:modcluster:1.0'>
469
+ <mod-cluster-config proxy-list="${jboss.mod_cluster.proxyList}" excluded-contexts='invoker,jbossws,juddi,console'>
470
+ <dynamic-load-provider>
471
+ <load-metric type='busyness'/>
472
+ </dynamic-load-provider>
473
+ </mod-cluster-config>
474
+ </subsystem>
475
+ <subsystem xmlns='urn:jboss:domain:naming:1.1'/>
476
+ <subsystem xmlns='urn:jboss:domain:osgi:1.2' activation='lazy'>
477
+ <properties>
478
+ <!-- Specifies the beginning start level of the framework -->
479
+ <property name='org.osgi.framework.startlevel.beginning'>
480
+ 1
481
+ </property>
482
+ </properties>
483
+ <capabilities>
484
+ <!-- modules registered with the OSGi layer on startup -->
485
+ <capability name='javax.servlet.api:v25'/>
486
+ <capability name='javax.transaction.api'/>
487
+ <!-- bundles started in startlevel 1 -->
488
+ <capability name='org.apache.felix.log' startlevel='1'/>
489
+ <capability name='org.jboss.osgi.logging' startlevel='1'/>
490
+ <capability name='org.apache.felix.configadmin' startlevel='1'/>
491
+ <capability name='org.jboss.as.osgi.configadmin' startlevel='1'/>
492
+ </capabilities>
493
+ </subsystem>
494
+ <subsystem xmlns='urn:jboss:domain:pojo:1.0'/>
495
+ <subsystem xmlns='urn:jboss:domain:remoting:1.1'>
496
+ <connector name='remoting-connector' socket-binding='remoting' security-realm='ApplicationRealm'/>
497
+ </subsystem>
498
+ <subsystem xmlns='urn:jboss:domain:resource-adapters:1.0'/>
499
+ <subsystem xmlns='urn:jboss:domain:sar:1.0'/>
500
+ <subsystem xmlns='urn:jboss:domain:security:1.1'>
501
+ <security-domains>
502
+ <security-domain name='other' cache-type='default'>
503
+ <authentication>
504
+ <login-module code='Remoting' flag='optional'>
505
+ <module-option name='password-stacking' value='useFirstPass'/>
506
+ </login-module>
507
+ <login-module code='RealmUsersRoles' flag='required'>
508
+ <module-option name='usersProperties' value='${jboss.server.config.dir}/application-users.properties'/>
509
+ <module-option name='rolesProperties' value='${jboss.server.config.dir}/application-roles.properties'/>
510
+ <module-option name='realm' value='ApplicationRealm'/>
511
+ <module-option name='password-stacking' value='useFirstPass'/>
512
+ </login-module>
513
+ </authentication>
514
+ </security-domain>
515
+ <security-domain name='jboss-web-policy' cache-type='default'>
516
+ <authorization>
517
+ <policy-module code='Delegating' flag='required'/>
518
+ </authorization>
519
+ </security-domain>
520
+ <security-domain name='jboss-ejb-policy' cache-type='default'>
521
+ <authorization>
522
+ <policy-module code='Delegating' flag='required'/>
523
+ </authorization>
524
+ </security-domain>
525
+ </security-domains>
526
+ </subsystem>
527
+ <subsystem xmlns='urn:jboss:domain:threads:1.1'/>
528
+ <subsystem xmlns='urn:jboss:domain:transactions:1.1'>
529
+ <core-environment>
530
+ <process-id>
531
+ <uuid/>
532
+ </process-id>
533
+ </core-environment>
534
+ <recovery-environment socket-binding='txn-recovery-environment' status-socket-binding='txn-status-manager'/>
535
+ <coordinator-environment default-timeout='300'/>
536
+ </subsystem>
537
+ <subsystem xmlns='urn:jboss:domain:web:1.1' default-virtual-server='default-host' native='false'>
538
+ <connector name='http' protocol='HTTP/1.1' scheme='http' socket-binding='http'/>
539
+ <connector name='ajp' protocol='AJP/1.3' scheme='http' socket-binding='ajp'/>
540
+ <virtual-server name='default-host'>
541
+ <alias name='localhost'/>
542
+ <alias name='example.com'/>
543
+ </virtual-server>
544
+ </subsystem>
545
+ <subsystem xmlns='urn:jboss:domain:webservices:1.1'>
546
+ <modify-wsdl-address>
547
+ true
548
+ </modify-wsdl-address>
549
+ <wsdl-host>
550
+ ${jboss.bind.address:127.0.0.1}
551
+ </wsdl-host>
552
+ <endpoint-config name='Standard-Endpoint-Config'/>
553
+ <endpoint-config name='Recording-Endpoint-Config'>
554
+ <pre-handler-chain name='recording-handlers' protocol-bindings='##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM'>
555
+ <handler name='RecordingHandler' class='org.jboss.ws.common.invocation.RecordingServerHandler'/>
556
+ </pre-handler-chain>
557
+ </endpoint-config>
558
+ </subsystem>
559
+ <subsystem xmlns='urn:jboss:domain:weld:1.0'/>
560
+ <subsystem xmlns='urn:jboss:domain:torquebox-bootstrap:1.0'/>
561
+ <subsystem xmlns='urn:jboss:domain:torquebox-core:1.0'/>
562
+ <subsystem xmlns='urn:jboss:domain:torquebox-services:1.0'/>
563
+ <subsystem xmlns='urn:jboss:domain:torquebox-security:1.0'/>
564
+ <subsystem xmlns='urn:jboss:domain:torquebox-jobs:1.0'/>
565
+ <subsystem xmlns='urn:jboss:domain:torquebox-stomp:1.0' socket-binding='stomp'/>
566
+ <subsystem xmlns='urn:jboss:domain:torquebox-messaging:1.0'/>
567
+ <subsystem xmlns='urn:jboss:domain:torquebox-cdi:1.0'/>
568
+ <subsystem xmlns='urn:jboss:domain:torquebox-web:1.0'/>
569
+ <subsystem xmlns='urn:jboss:domain:torquebox-cache:1.0'/>
570
+ <subsystem xmlns='urn:jboss:domain:polyglot-hasingleton:1.0'/>
571
+ </profile>
572
+ <interfaces>
573
+ <interface name='management'>
574
+ <inet-address value='${jboss.bind.address.management:127.0.0.1}'/>
575
+ </interface>
576
+ <interface name='public'>
577
+ <inet-address value='${jboss.bind.address:127.0.0.1}'/>
578
+ </interface>
579
+ <!-- TODO - only show this if the jacorb subsystem is added -->
580
+ <interface name='unsecure'>
581
+ <!--
582
+ ~ Used for IIOP sockets in the standard configuration.
583
+ ~ To secure JacORB you need to setup SSL
584
+ -->
585
+ <inet-address value='${jboss.bind.address.unsecure:127.0.0.1}'/>
586
+ </interface>
587
+ </interfaces>
588
+ <socket-binding-group name='standard-sockets' default-interface='public' port-offset='${jboss.socket.binding.port-offset:0}'>
589
+ <socket-binding name='management-native' interface='management' port='${jboss.management.native.port:9999}'/>
590
+ <socket-binding name='management-http' interface='management' port='${jboss.management.http.port:9990}'/>
591
+ <socket-binding name='management-https' interface='management' port='${jboss.management.https.port:9443}'/>
592
+ <socket-binding name='ajp' port='<%= rubber_env.torquebox_ajp_port %>'/>
593
+ <socket-binding name='http' port='<%= rubber_env.torquebox_http_port %>'/>
594
+ <socket-binding name='https' port='<%= rubber_env.torquebox_https_port %>'/>
595
+ <socket-binding name='jacorb' interface='unsecure' port='3528'/>
596
+ <socket-binding name='jacorb-ssl' interface='unsecure' port='3529'/>
597
+ <socket-binding name='jgroups-diagnostics' port='0' multicast-address='224.0.75.75' multicast-port='7500'/>
598
+ <socket-binding name='jgroups-mping' port='0' multicast-address='${jboss.default.multicast.address:230.0.0.4}' multicast-port='45700'/>
599
+ <socket-binding name='jgroups-tcp' port='7600'/>
600
+ <socket-binding name='jgroups-tcp-fd' port='57600'/>
601
+ <socket-binding name='jgroups-udp' port='55200' multicast-address='${jboss.default.multicast.address:230.0.0.4}' multicast-port='45688'/>
602
+ <socket-binding name='jgroups-udp-fd' port='54200'/>
603
+ <socket-binding name='messaging' port='5445'/>
604
+ <socket-binding name='messaging-throughput' port='5455'/>
605
+ <socket-binding name='modcluster' port='0' multicast-address='224.0.1.105' multicast-port='23364'/>
606
+ <socket-binding name='osgi-http' interface='management' port='8090'/>
607
+ <socket-binding name='remoting' port='4447'/>
608
+ <socket-binding name='txn-recovery-environment' port='4712'/>
609
+ <socket-binding name='txn-status-manager' port='4713'/>
610
+ <outbound-socket-binding name='mail-smtp'>
611
+ <remote-destination host='localhost' port='25'/>
612
+ </outbound-socket-binding>
613
+ <socket-binding name='stomp' port='8675'/>
614
+ <socket-binding name='messaging-group' port='0' multicast-address='${jboss.messaging.group.address:231.7.7.7}' multicast-port='${jboss.messaging.group.port:9876}'/>
615
+ </socket-binding-group>
616
+ </server>