<?xml version='1.0' encoding='UTF-8'?>

<server xmlns="urn:jboss:domain:1.3">

	<extensions>
		<extension module="org.jboss.as.clustering.infinispan" />
		<extension module="org.jboss.as.clustering.jgroups" />
		<extension module="org.jboss.as.cmp" />
		<extension module="org.jboss.as.configadmin" />
		<extension module="org.jboss.as.connector" />
		<extension module="org.jboss.as.deployment-scanner" />
		<extension module="org.jboss.as.ee" />
		<extension module="org.jboss.as.ejb3" />
		<extension module="org.jboss.as.jacorb" />
		<extension module="org.jboss.as.jaxr" />
		<extension module="org.jboss.as.jaxrs" />
		<extension module="org.jboss.as.jdr" />
		<extension module="org.jboss.as.jmx" />
		<extension module="org.jboss.as.jpa" />
		<extension module="org.jboss.as.jsr77" />
		<extension module="org.jboss.as.logging" />
		<extension module="org.jboss.as.mail" />
		<extension module="org.jboss.as.messaging" />
		<extension module="org.jboss.as.naming" />
		<extension module="org.jboss.as.osgi" />
		<extension module="org.jboss.as.pojo" />
		<extension module="org.jboss.as.remoting" />
		<extension module="org.jboss.as.sar" />
		<extension module="org.jboss.as.security" />
		<extension module="org.jboss.as.threads" />
		<extension module="org.jboss.as.transactions" />
		<extension module="org.jboss.as.web" />
		<extension module="org.jboss.as.webservices" />
		<extension module="org.jboss.as.weld" />
	</extensions>
	
	<system-properties>
       <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="on"/>
    </system-properties>

	<management>
		<management-interfaces>
            <native-interface>
                <socket-binding native="management-native"/>
            </native-interface>
            <http-interface>
                <socket-binding http="management-http"/>
            </http-interface>
        </management-interfaces>
	</management>

	<profile>
		<subsystem xmlns="urn:jboss:domain:logging:1.1">
			<!--console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <pattern-formatter 
				pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler -->
			<periodic-rotating-file-handler name="FILE">
				<formatter>
					<pattern-formatter
						pattern="%d{yyyy/MM/dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n" />
				</formatter>
				<file relative-to="jboss.server.log.dir" path="server.log" />
				<suffix value=".yyyy-MM-dd" />
				<append value="true" />
			</periodic-rotating-file-handler>
			<logger category="com.arjuna">
				<level name="WARN" />
			</logger>
			<logger category="org.apache.tomcat.util.modeler">
				<level name="WARN" />
			</logger>
			<logger category="sun.rmi">
				<level name="WARN" />
			</logger>
			<logger category="jacorb">
				<level name="WARN" />
			</logger>
			<logger category="jacorb.config">
				<level name="ERROR" />
			</logger>
			<root-logger>
				<level name="INFO" />
				<handlers>
					<!--handler name="CONSOLE"/ -->
					<handler name="FILE" />
				</handlers>
			</root-logger>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:cmp:1.0" />
		<subsystem xmlns="urn:jboss:domain:configadmin:1.0" />
		<subsystem xmlns="urn:jboss:domain:datasources:1.1">
			<datasources>
				<datasource jndi-name="java:jboss/datasources/MysqlDS"
					enabled="${mysql.enabled}" use-java-context="true" pool-name="MysqlDS">
					<connection-url>jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}?useUnicode=true&amp;characterEncoding=UTF-8
					</connection-url>
					<driver>mysql</driver>
					<security>
						<user-name>${env.OPENSHIFT_MYSQL_DB_USERNAME}</user-name>
						<password>${env.OPENSHIFT_MYSQL_DB_PASSWORD}</password>
					</security>
				</datasource>
				<drivers>
					<driver name="mysql" module="com.mysql.jdbc">
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
				</drivers>
			</datasources>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
			<deployment-scanner path="deployments"
				relative-to="jboss.server.base.dir" scan-interval="5000"
				deployment-timeout="300" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:ee:1.1">
			<spec-descriptor-property-replacement>false
			</spec-descriptor-property-replacement>
			<jboss-descriptor-property-replacement>true
			</jboss-descriptor-property-replacement>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:ejb3:1.3">
			<session-bean>
				<stateless>
					<bean-instance-pool-ref pool-name="slsb-strict-max-pool" />
				</stateless>
				<stateful default-access-timeout="5000" cache-ref="simple"
					clustered-cache-ref="clustered" />
				<singleton default-access-timeout="5000" />
			</session-bean>
			<mdb>
				<resource-adapter-ref resource-adapter-name="hornetq-ra" />
				<bean-instance-pool-ref pool-name="mdb-strict-max-pool" />
			</mdb>
			<pools>
				<bean-instance-pools>
					<strict-max-pool name="slsb-strict-max-pool"
						max-pool-size="20" instance-acquisition-timeout="5"
						instance-acquisition-timeout-unit="MINUTES" />
					<strict-max-pool name="mdb-strict-max-pool"
						max-pool-size="20" instance-acquisition-timeout="5"
						instance-acquisition-timeout-unit="MINUTES" />
				</bean-instance-pools>
			</pools>
			<caches>
				<cache name="simple" aliases="NoPassivationCache" />
				<cache name="passivating" passivation-store-ref="file"
					aliases="SimpleStatefulCache" />
				<cache name="clustered" passivation-store-ref="infinispan"
					aliases="StatefulTreeCache" />
			</caches>
			<passivation-stores>
				<file-passivation-store name="file" />
				<cluster-passivation-store name="infinispan"
					cache-container="ejb" />
			</passivation-stores>
			<async thread-pool-name="default" />
			<timer-service thread-pool-name="default">
				<data-store path="timer-service-data" relative-to="jboss.server.data.dir" />
			</timer-service>
			<remote connector-ref="remoting-connector" thread-pool-name="default" />
			<thread-pools>
				<thread-pool name="default">
					<max-threads count="10" />
					<keepalive-time time="100" unit="milliseconds" />
				</thread-pool>
			</thread-pools>
			<iiop enable-by-default="false" use-qualified-name="false" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:infinispan:1.3">
			<cache-container name="cluster" aliases="ha-partition"
				default-cache="default">
				<transport lock-timeout="60000" />
				<replicated-cache name="default" mode="SYNC"
					batching="true">
					<locking isolation="REPEATABLE_READ" />
				</replicated-cache>
			</cache-container>
			<cache-container name="web" aliases="standard-session-cache"
				default-cache="repl">
				<transport lock-timeout="60000" />
				<replicated-cache name="repl" mode="ASYNC"
					batching="true">
					<file-store />
				</replicated-cache>
				<replicated-cache name="sso" mode="SYNC" batching="true" />
				<distributed-cache name="dist" mode="ASYNC"
					batching="true" l1-lifespan="0">
					<file-store />
				</distributed-cache>
			</cache-container>
			<cache-container name="ejb" aliases="sfsb sfsb-cache"
				default-cache="repl">
				<transport lock-timeout="60000" />
				<replicated-cache name="repl" mode="ASYNC"
					batching="true">
					<eviction strategy="LRU" max-entries="10000" />
					<file-store />
				</replicated-cache>
				<!-- ~ Clustered cache used internally by EJB subsytem for managing the 
					client-mapping(s) of ~ the socketbinding referenced by the EJB remoting connector -->
				<replicated-cache name="remote-connector-client-mappings"
					mode="SYNC" batching="true" />
				<distributed-cache name="dist" mode="ASYNC"
					batching="true" l1-lifespan="0">
					<eviction strategy="LRU" max-entries="10000" />
					<file-store />
				</distributed-cache>
			</cache-container>
			<cache-container name="hibernate" default-cache="local-query"
				module="org.jboss.as.jpa.hibernate:4">
				<transport lock-timeout="60000" />
				<local-cache name="local-query">
					<transaction mode="NONE" />
					<eviction strategy="LRU" max-entries="10000" />
					<expiration max-idle="100000" />
				</local-cache>
				<invalidation-cache name="entity" mode="SYNC">
					<transaction mode="NON_XA" />
					<eviction strategy="LRU" max-entries="10000" />
					<expiration max-idle="100000" />
				</invalidation-cache>
				<replicated-cache name="timestamps" mode="ASYNC">
					<transaction mode="NONE" />
					<eviction strategy="NONE" />
				</replicated-cache>
			</cache-container>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jacorb:1.2">
			<orb>
				<initializers transactions="spec" security="on" />
			</orb>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jaxr:1.1">
			<connection-factory jndi-name="java:jboss/jaxr/ConnectionFactory" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jaxrs:1.0" />
		<subsystem xmlns="urn:jboss:domain:jca:1.1">
			<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
            <bean-validation enabled="true"/>
			<default-workmanager>
				<short-running-threads>
					<core-threads count="50" />
					<queue-length count="50" />
					<max-threads count="50" />
					<keepalive-time time="10" unit="seconds" />
				</short-running-threads>
				<long-running-threads>
					<core-threads count="50" />
					<queue-length count="50" />
					<max-threads count="50" />
					<keepalive-time time="10" unit="seconds" />
				</long-running-threads>
			</default-workmanager>
			<cached-connection-manager />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jdr:1.0" />
		<subsystem xmlns="urn:jboss:domain:jgroups:1.1"
			default-stack="tcp">
			<stack name="tcp">
				<transport type="TCP" socket-binding="jgroups-tcp">
					<property name="external_addr">${env.OPENSHIFT_GEAR_DNS}</property>
					<property name="external_port">${env.OPENSHIFT_JBOSSEAP_CLUSTER_PROXY_PORT}
					</property>
					<property name="bind_port">7600</property>
					<property name="bind_addr">${env.OPENSHIFT_INTERNAL_IP}</property>
				</transport>
				<protocol type="TCPPING">
					<property name="timeout">3000</property>
					<property name="initial_hosts">${env.OPENSHIFT_JBOSSEAP_CLUSTER}</property>
					<property name="port_range">0</property>
					<property name="num_initial_members">1</property>
				</protocol>
				<protocol type="MERGE2" />
				<protocol type="FD" />
				<protocol type="VERIFY_SUSPECT" />
				<protocol type="BARRIER" />
				<protocol type="pbcast.NAKACK" />
				<protocol type="UNICAST2" />
				<protocol type="pbcast.STABLE" />
				<protocol type="AUTH">
					<property name="auth_class">org.jgroups.auth.MD5Token</property>
					<property name="token_hash">SHA</property>
					<property name="auth_value">${env.OPENSHIFT_APP_UUID}</property>
				</protocol>
				<protocol type="pbcast.GMS" />
				<protocol type="UFC" />
				<protocol type="MFC" />
				<protocol type="FRAG2" />
				<!--protocol type="pbcast.STATE_TRANSFER"/> <protocol type="pbcast.FLUSH"/ -->
			</stack>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jmx:1.1">
			<show-model value="true" />
			<remoting-connector />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jpa:1.0">
			<jpa default-datasource="" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:jsr77:1.0" />
		<subsystem xmlns="urn:jboss:domain:mail:1.0">
			<mail-session jndi-name="java:jboss/mail/Default">
				<smtp-server outbound-socket-binding-ref="mail-smtp" />
			</mail-session>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:messaging:1.2">
			<hornetq-server>
				<clustered>false</clustered>
				<persistence-enabled>false</persistence-enabled>
				<security-enabled>false</security-enabled>
				<journal-file-size>102400</journal-file-size>
				<journal-min-files>2</journal-min-files>
				
				<thread-pool-max-size>${messaging.thread.pool.max.size}</thread-pool-max-size>
 	            <scheduled-thread-pool-max-size>${messaging.scheduled.thread.pool.max.size}</scheduled-thread-pool-max-size>
 	            
				<connectors>
					<netty-connector name="netty" socket-binding="messaging" />
					<netty-connector name="netty-throughput"
						socket-binding="messaging-throughput">
						<param key="batch-delay" value="50" />
					</netty-connector>
					<in-vm-connector name="in-vm" server-id="0" />
				</connectors>
				<acceptors>
					<netty-acceptor name="netty" socket-binding="messaging" />
					<netty-acceptor name="netty-throughput"
						socket-binding="messaging-throughput">
						<param key="batch-delay" value="50" />
						<param key="direct-deliver" value="false" />
					</netty-acceptor>
					<in-vm-acceptor name="in-vm" server-id="0" />
				</acceptors>
				<!--broadcast-groups> <broadcast-group name="bg-group1"> <socket-binding>messaging-group</socket-binding> 
					<broadcast-period>5000</broadcast-period> <connector-ref>netty</connector-ref> 
					</broadcast-group> </broadcast-groups> <discovery-groups> <discovery-group 
					name="dg-group1"> <socket-binding>messaging-group</socket-binding> <refresh-timeout>10000</refresh-timeout> 
					</discovery-group> </discovery-groups> <cluster-connections> <cluster-connection 
					name="my-cluster"> <address>jms</address> <connector-ref>netty</connector-ref> 
					<discovery-group-ref discovery-group-name="dg-group1"/> </cluster-connection> 
					</cluster-connections -->
				<address-settings>
					<!--default for catch all -->
					<address-setting match="#">
						<dead-letter-address>jms.queue.DLQ</dead-letter-address>
						<expiry-address>jms.queue.ExpiryQueue</expiry-address>
						<redelivery-delay>0</redelivery-delay>
						<redistribution-delay>1000</redistribution-delay>
						<max-size-bytes>10485760</max-size-bytes>
						<address-full-policy>BLOCK</address-full-policy>
						<message-counter-history-day-limit>10
						</message-counter-history-day-limit>
					</address-setting>
				</address-settings>
				<jms-connection-factories>
					<connection-factory name="InVmConnectionFactory">
						<connectors>
							<connector-ref connector-name="in-vm" />
						</connectors>
						<entries>
							<entry name="java:/ConnectionFactory" />
						</entries>
					</connection-factory>
					<!--
					<connection-factory name="RemoteConnectionFactory">
						<connectors>
							<connector-ref connector-name="netty" />
						</connectors>
						<entries>
							<entry name="java:jboss/exported/jms/RemoteConnectionFactory" />
						</entries>
					</connection-factory>
					-->
					<pooled-connection-factory name="hornetq-ra">
						<transaction mode="xa" />
						<connectors>
							<connector-ref connector-name="in-vm" />
						</connectors>
						<entries>
							<entry name="java:/JmsXA" />
						</entries>
					</pooled-connection-factory>
				</jms-connection-factories>
				<jms-destinations>
					<jms-queue name="refreshQueue">
						<entry name="jms/refreshQueue"/>
						<entry name="java:jboss/exported/jms/refreshQueue"/>
					</jms-queue>
				</jms-destinations>
			</hornetq-server>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:naming:1.2">
			<remote-naming />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">
			<properties>
				<!-- Specifies the beginning start level of the framework -->
				<property name="org.osgi.framework.startlevel.beginning">1</property>
			</properties>
			<capabilities>
				<!-- modules registered with the OSGi layer on startup -->
				<capability name="javax.servlet.api:v25" />
				<capability name="javax.transaction.api" />
				<!-- bundles started in startlevel 1 -->
				<capability name="org.apache.felix.log" startlevel="1" />
				<capability name="org.jboss.osgi.logging" startlevel="1" />
				<capability name="org.apache.felix.configadmin"
					startlevel="1" />
				<capability name="org.jboss.as.osgi.configadmin"
					startlevel="1" />
			</capabilities>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:pojo:1.0" />
		<subsystem xmlns="urn:jboss:domain:remoting:1.1">
			<connector name="remoting-connector" socket-binding="remoting" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0" />
		<subsystem xmlns="urn:jboss:domain:sar:1.0" />
		<subsystem xmlns="urn:jboss:domain:security:1.2">
            <security-domains>
                <security-domain name="other" cache-type="default">
                    <authentication>
                        <login-module code="Remoting" flag="optional">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                        <login-module code="RealmDirect" flag="required">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                    </authentication>
                </security-domain>
                <security-domain name="jboss-web-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
                <security-domain name="jboss-ejb-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
            </security-domains>
        </subsystem>
		<subsystem xmlns="urn:jboss:domain:threads:1.1" />
		<subsystem xmlns="urn:jboss:domain:transactions:1.2">
			<core-environment>
				<process-id>
					<uuid />
				</process-id>
			</core-environment>
			<recovery-environment socket-binding="txn-recovery-environment"
				status-socket-binding="txn-status-manager" />
			<coordinator-environment default-timeout="300" />
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:web:1.1"
			default-virtual-server="default-host" native="false">
			<connector name="http" protocol="HTTP/1.1" scheme="http"
				socket-binding="http" />
			<virtual-server name="default-host"
				enable-welcome-root="false">
				<alias name="localhost" />
			</virtual-server>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:webservices:1.1">
			<modify-wsdl-address>true</modify-wsdl-address>
			<wsdl-host>${env.OPENSHIFT_GEAR_DNS}</wsdl-host>
            <wsdl-port>80</wsdl-port>
			<endpoint-config name="Standard-Endpoint-Config" />
			<endpoint-config name="Recording-Endpoint-Config">
				<pre-handler-chain name="recording-handlers"
					protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
					<handler name="RecordingHandler"
						class="org.jboss.ws.common.invocation.RecordingServerHandler" />
				</pre-handler-chain>
			</endpoint-config>
		</subsystem>
		<subsystem xmlns="urn:jboss:domain:weld:1.0" />
	</profile>

	<interfaces>
		<interface name="management">
			<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
		</interface>
		<interface name="public">
			<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
		</interface>
		<interface name="unsecure">
			<!-- Used for IIOP sockets in the standarad configuration. To secure JacORB 
				you need to setup SSL -->
			<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
		</interface>
	</interfaces>

	<socket-binding-group name="standard-sockets"
		default-interface="public" port-offset="0">
		<socket-binding name="management-native" interface="management"
			port="9999" />
		<socket-binding name="management-http" interface="management"
			port="9990" />

		<socket-binding name="http" port="8080" />
		<socket-binding name="jacorb" interface="unsecure"
			port="3528" />
		<socket-binding name="jacorb-ssl" interface="unsecure"
			port="3529" />
		<socket-binding name="jgroups-tcp" port="7600" />
		<socket-binding name="messaging" port="5445" />
		<!--socket-binding name="messaging-group" multicast-address="${jboss.messaging.group.address:231.7.7.7}" 
			multicast-port="${jboss.messaging.group.port:9876}"/ -->
		<socket-binding name="messaging-throughput" port="5455" />
		<socket-binding name="osgi-http" interface="management"
			port="8090" />
		<socket-binding name="remoting" port="4447" />
		<socket-binding name="txn-recovery-environment" port="4712" />
		<socket-binding name="txn-status-manager" port="4713" />
		<outbound-socket-binding name="mail-smtp">
			<remote-destination host="localhost" port="25" />
		</outbound-socket-binding>
	</socket-binding-group>
</server>
