package org.openspaces.webapp;
import org.mortbay.jetty.Server;
import org.mortbay.log.Log;
import org.openspaces.core.GigaSpace;
import org.openspaces.core.cluster.ClusterInfo;
import org.openspaces.core.cluster.ClusterInfoAware;
import org.openspaces.core.context.GigaSpaceContext;
import org.springframework.beans.factory.InitializingBean;
public class GigaServer extends Server implements InitializingBean, ClusterInfoAware {
public final String GIGASPACE_ATTR = "org.openspaces.core.GigaSpace";
@GigaSpaceContext
private GigaSpace gigaSpace;
private ClusterInfo _clusterInfo;
public void setGigaSpace(GigaSpace gigaSpace)
{
this.gigaSpace = gigaSpace;
}
public void afterPropertiesSet() throws Exception
{
// not the right place to write out a full on configuration object, server not initialized, but this does appear
// to write out an object. Need to work out the reading and writing bit, maybe try a consolidated configuration object with a
// a map of configurations keys by a unique key based on clusterInfo and then read/write that. would want to ensure its
// unique though, so maybe instance Id 1 would be the only one allowed to create it, others would block?
// of course this is dependent on the space setting, currently configured with in jvm space only, is this the default
// way we want to do it?
gigaSpace.write( new GigaServerConfiguration( _clusterInfo, this ) );
GigaServerConfiguration gsc = gigaSpace.read( new GigaServerConfiguration() );
if ( gsc == null )
{
Log.info( "GSC is null :(" );
}
else
{
Log.info( "GSC is not null and server port is " + gsc.getServerPort() ); // currently 0, need another place for doing this
}
}
public void setClusterInfo( ClusterInfo clusterInfo )
{
if ( clusterInfo == null )
{
Log.info( "\n\n\nGIGASERVER: cluster info not set\n\n\n" );
return;
}
Log.info( "\n\n\nGIGASERVER: My instanceId is: " + clusterInfo.getInstanceId() + "\n\n\n" );
_clusterInfo = clusterInfo;
}
}