<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.org/config/1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
        http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">
  <description>GridGain configuration</description>
  <bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start">
    <property name="persistent" value="false" />
    <property name="transportConnectorURIs">
      <list>
        <value>tcp://localhost:39210</value>
      </list>
    </property>
  </bean>
  <util:map id="jmsJndiEnvironment">
    <entry>
      <key>
        <util:constant static-field="javax.naming.Context.INITIAL_CONTEXT_FACTORY" />
      </key>
      <value>org.apache.activemq.jndi.ActiveMQInitialContextFactory</value>
    </entry>
    <entry>
      <key>
        <util:constant static-field="javax.naming.Context.PROVIDER_URL" />
      </key>
	<value>vm://localhost</value>
    </entry>
  </util:map>
  <bean id="grid" class="org.gridgain.grid.GridConfigurationAdapter" scope="singleton" depends-on="broker">
    <property name="gridName" value="[YOUR GRID NAME HERE]" />
    <property name="peerClassLoadingEnabled" value="true" />
    <property name="communicationSpi">
      <bean class="org.gridgain.grid.spi.communication.jms.GridJmsCommunicationSpi">
        <property name="connectionFactoryName" value="connectionFactory" />
        <property name="topicName" value="topic/gridgain.communication" />
        <property name="jndiEnvironment" ref="jmsJndiEnvironment" />
      </bean>
    </property>
    <property name="discoverySpi">
      <bean class="org.gridgain.grid.spi.discovery.jms.GridJmsDiscoverySpi">
        <property name="connectionFactoryName" value="connectionFactory" />
        <property name="topicName" value="topic/gridgain.discovery" />
        <property name="jndiEnvironment" ref="jmsJndiEnvironment" />
      </bean>
    </property>
    <property name="checkpointSpi">
        <bean class="org.gridgain.grid.spi.checkpoint.sharedfs.GridSharedFsCheckpointSpi">
            <property name="directoryPath" value="[PATH TO TEMP]"/>            
        </bean>
    </property> 
    <property name="loadBalancingSpi">
        <bean class="org.gridgain.grid.spi.loadbalancing.adaptive.GridAdaptiveLoadBalancingSpi">
            <property name="loadProbe">
                <bean class="org.gridgain.grid.spi.loadbalancing.adaptive.GridAdaptiveProcessingTimeLoadProbe">
                    <property name="useAverage" value="true"/>
                </bean>
            </property>
        </bean>
    </property>
    <property name="topologySpi">
        <bean class="org.gridgain.grid.spi.topology.basic.GridBasicTopologySpi">
            <property name="localNode" value="true"/>
        </bean>
    </property>
    <property name="collisionSpi">
        <bean class="org.gridgain.grid.spi.collision.jobstealing.GridJobStealingCollisionSpi">
            <property name="activeJobsThreshold" value="1" />
            <property name="waitJobsThreshold" value="0" />
            <property name="messageExpireTime" value="1000" />
            <property name="maximumStealingAttempts" value="5" />
            <property name="stealingEnabled" value="true" />
        </bean>
    </property>
    <property name="failoverSpi">
        <bean class="org.gridgain.grid.spi.failover.jobstealing.GridJobStealingFailoverSpi">
            <property name="maximumFailoverAttempts" value="5"/>
        </bean>
    </property>
  </bean>  
</beans>