SGF-37
+ cache server starts last (on container refresh) to allow regions and interests to be properly registered and started + add documentation on cacheserver start-up
This commit is contained in:
@@ -221,6 +221,10 @@
|
||||
<ulink url="http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-factory-placeholderconfigurer">support</ulink>,
|
||||
<ulink url="http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html">SpEL</ulink> and the <ulink url="http://blog.springsource.com/2011/06/09/spring-framework-3-1-m2-released/">environment abstraction</ulink> one
|
||||
can externalize environment specific properties from the main code base easing the deployment across multiple machines.</para>
|
||||
|
||||
<note><para>To avoid initialization problems, the <interfacename>CacheServer</interfacename>s started by SGF will start <emphasis>after</emphasis> the container has been fully initialized. This
|
||||
allows potential regions, listener, writers or instantiators defined declaratively to be fully initialized and registered before the server starts accepting connections. Keep this in mind
|
||||
when doing programmatic configuration of the items above as the server might start before your components and thus not be seen by the clients connecting right away.</para></note>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.gemstone.gemfire.cache.server.ClientSubscriptionConfig;
|
||||
import com.gemstone.gemfire.cache.server.ServerLoadProbe;
|
||||
|
||||
/**
|
||||
* FactoryBean for easy creation and configuration of GemFire {@link CacheServerProcess} instances.
|
||||
* FactoryBean for easy creation and configuration of GemFire {@link CacheServer} instances.
|
||||
*
|
||||
* @author Costin Leau
|
||||
*/
|
||||
@@ -106,8 +106,6 @@ public class CacheServerFactoryBean implements FactoryBean<CacheServer>, Initial
|
||||
config.setEvictionPolicy(evictionPolicy.name().toLowerCase());
|
||||
if (subscriptionDiskStore != null)
|
||||
config.setDiskStoreName(subscriptionDiskStore.getFile().getCanonicalPath());
|
||||
|
||||
start();
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.springframework.data.gemfire.server;
|
||||
import com.gemstone.gemfire.cache.server.CacheServer;
|
||||
|
||||
/**
|
||||
* Enumeration of the various client subscription policies for {@link CacheServerProcess}.
|
||||
* Enumeration of the various client subscription policies for {@link CacheServer}.
|
||||
*
|
||||
* @author Costin Leau
|
||||
*/
|
||||
|
||||
45
src/test/java/org/springframework/data/gemfire/Init.java
Normal file
45
src/test/java/org/springframework/data/gemfire/Init.java
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2011 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.data.gemfire;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import com.gemstone.gemfire.cache.server.CacheServer;
|
||||
|
||||
|
||||
/**
|
||||
* Simple bean used to check initialization order
|
||||
*
|
||||
* @author Costin Leau
|
||||
*/
|
||||
public class Init implements InitializingBean, BeanFactoryAware {
|
||||
|
||||
private BeanFactory bf;
|
||||
|
||||
public void afterPropertiesSet() {
|
||||
CacheServer cs = bf.getBean(CacheServer.class);
|
||||
Assert.isTrue(!cs.isRunning(), "CacheServer should not have been started yet... ");
|
||||
}
|
||||
|
||||
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
|
||||
this.bf = beanFactory;
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,11 @@ public class CacheServerNamespaceTest extends RecreatingContextTest {
|
||||
return "org/springframework/data/gemfire/config/server-ns.xml";
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInitOrder() throws Exception {
|
||||
// the test is actually executed through Init#afterPropertiesSet
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBasicCacheServer() throws Exception {
|
||||
CacheServer cacheServer = ctx.getBean("advanced-config", CacheServer.class);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:util="http://www.springframework.org/schema/util"
|
||||
default-lazy-init="true"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
|
||||
@@ -13,6 +12,8 @@
|
||||
|
||||
<gfe:cache />
|
||||
|
||||
<bean id="bean1" class="org.springframework.data.gemfire.Init"/>
|
||||
|
||||
<!-- Advanced example depicting various cache server configuration options -->
|
||||
<gfe:cache-server id="advanced-config" auto-startup="true"
|
||||
bind-address="localhost" port="${gfe.port.6}" host-name-for-clients="localhost"
|
||||
@@ -23,6 +24,8 @@
|
||||
<gfe:subscription-config eviction-type="ENTRY" capacity="1000" disk-store="file://${java.io.tmpdir}"/>
|
||||
</gfe:cache-server>
|
||||
|
||||
<bean id="bean2" class="org.springframework.data.gemfire.Init"/>
|
||||
|
||||
<context:property-placeholder location="classpath:port.properties" />
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user