GigaSpaces XAP 7.0 API

org.openspaces.pu.container.jee.jetty
Class JettyJeeProcessingUnitContainerProvider

java.lang.Object
  extended by org.openspaces.pu.container.jee.jetty.JettyJeeProcessingUnitContainerProvider
All Implemented Interfaces:
ClusterInfoAware, BeanLevelPropertiesAware, ClassLoaderAwareProcessingUnitContainerProvider, DeployableProcessingUnitContainerProvider, JeeProcessingUnitContainerProvider, ProcessingUnitContainerProvider, ApplicationContextProcessingUnitContainerProvider

public class JettyJeeProcessingUnitContainerProvider
extends Object
implements JeeProcessingUnitContainerProvider

An implementation of JeeProcessingUnitContainerProvider that can run web applications (war files) using Jetty.

The jetty xml configuration is loaded from DEFAULT_JETTY_PU location if it exists. If it does not exists, two defaults exists, one is the jetty.plain.pu.xml and the other is jetty.shared.xml. By default, if nothing is passed, the jetty.plain.xml is loaded.

The difference between plain and shared mode is only indicated by the built in jerry spring application context. The plain mode starts a jetty instance per web application instance. The shared mode uses the same jetty instance for all web applications. The default is plain mode as it is usually the simpler and preferred way to use it.

The web application will be enabled automatically for OpenSpaces bootstrapping using BootstrapWebApplicationContextListener.

Post processing of the web.xml and jetty-web.xml is performed allowing to use ${...} notation within them (for example, using system properties, deployed properties, or ${clusterInfo...}).

JMX in jetty can be enabled by passing a deployment property JETTY_JMX_PROP. If set to true jetty will be configured with JMX. In plain mode, where there can be more than one instance of jetty within the same JVM, the domain each instance will be registered under will be gigaspaces.jetty.${clusterInfo.name}.${clusterInfo.runningNumberOffset1}. In shared mode, where there is only one instance of jetty in a single JVM, jetty JMX will be registered with a domain called gigaspaces.jetty.

Author:
kimchy

Field Summary
static String DEFAULT_JETTY_PU
          The optional location where a jetty spring application context (responsible for configuring jetty) will be loaded (within the processing unit).
static String INSTANCE_PLAIN
           
static String INSTANCE_SHARD
           
static String INTERNAL_JETTY_PU_PREFIX
           
static String JETTY_INSTANCE_PROP
           
static String JETTY_JMX_PROP
          The deployment property controlling if JMX is enabled or not.
static String JETTY_LOCATION_PREFIX_SYSPROP
           
 
Fields inherited from interface org.openspaces.pu.container.jee.JeeProcessingUnitContainerProvider
APPLICATION_CONTEXT_CONTEXT, BEAN_LEVEL_PROPERTIES_CONTEXT, CLUSTER_INFO_CONTEXT
 
Fields inherited from interface org.openspaces.pu.container.spi.ApplicationContextProcessingUnitContainerProvider
DEFAULT_FS_PU_CONTEXT_LOCATION, DEFAULT_PU_CONTEXT_LOCATION
 
Fields inherited from interface org.openspaces.pu.container.DeployableProcessingUnitContainerProvider
CONTEXT_PROPERTY_DEPLOY_PATH
 
Constructor Summary
JettyJeeProcessingUnitContainerProvider()
           
 
Method Summary
 void addConfigLocation(Resource resource)
          Adds a config location using Springs Resource abstraction.
 void addConfigLocation(String path)
          Adds a config location based on a String description using Springs PathMatchingResourcePatternResolver.
 ProcessingUnitContainer createContainer()
          See the header javadoc.
static ApplicationContext getCurrentApplicationContext()
          Allows to get the current application context (loaded from pu.xml) during web application startup.
static BeanLevelProperties getCurrentBeanLevelProperties()
           
static ClusterInfo getCurrentClusterInfo()
           
 void setBeanLevelProperties(BeanLevelProperties beanLevelProperties)
          Sets the BeanLevelProperties that will be used to configure this processing unit.
 void setClassLoader(ClassLoader classLoader)
          Sets the class loader this processing unit container will load the application context with.
 void setClusterInfo(ClusterInfo clusterInfo)
          Sets the ClusterInfo that will be used to configure this processing unit.
 void setDeployPath(File warPath)
          Sets the deploy path where the exploded war jetty will work with is located.
 void setParentContext(ApplicationContext parentContext)
          Sets Spring parent ApplicationContext that will be used when constructing this processing unit application context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_JETTY_PU

public static final String DEFAULT_JETTY_PU
The optional location where a jetty spring application context (responsible for configuring jetty) will be loaded (within the processing unit). If does not exists, will load either the plain or shared built in jetty configurations (controlled by JETTY_INSTANCE_PROP) defaulting to plain.

See Also:
Constant Field Values

INTERNAL_JETTY_PU_PREFIX

public static final String INTERNAL_JETTY_PU_PREFIX
See Also:
Constant Field Values

INSTANCE_PLAIN

public static final String INSTANCE_PLAIN
See Also:
Constant Field Values

INSTANCE_SHARD

public static final String INSTANCE_SHARD
See Also:
Constant Field Values

JETTY_LOCATION_PREFIX_SYSPROP

public static final String JETTY_LOCATION_PREFIX_SYSPROP
See Also:
Constant Field Values

JETTY_INSTANCE_PROP

public static final String JETTY_INSTANCE_PROP
See Also:
Constant Field Values

JETTY_JMX_PROP

public static final String JETTY_JMX_PROP
The deployment property controlling if JMX is enabled or not. Defaults to false (JMX is disabled).

See Also:
Constant Field Values
Constructor Detail

JettyJeeProcessingUnitContainerProvider

public JettyJeeProcessingUnitContainerProvider()
Method Detail

getCurrentApplicationContext

public static ApplicationContext getCurrentApplicationContext()
Allows to get the current application context (loaded from pu.xml) during web application startup. Can be used to access beans defined within it (like a Space) by components loaded (such as session storage). Note, this is only applicable during web application startup. It is cleared right afterwards.


getCurrentClusterInfo

public static ClusterInfo getCurrentClusterInfo()

getCurrentBeanLevelProperties

public static BeanLevelProperties getCurrentBeanLevelProperties()

setParentContext

public void setParentContext(ApplicationContext parentContext)
Sets Spring parent ApplicationContext that will be used when constructing this processing unit application context.


setBeanLevelProperties

public void setBeanLevelProperties(BeanLevelProperties beanLevelProperties)
Sets the BeanLevelProperties that will be used to configure this processing unit. When constructing the container this provider will automatically add to the application context both BeanLevelPropertyBeanPostProcessor and BeanLevelPropertyPlaceholderConfigurer based on this bean level properties.

Specified by:
setBeanLevelProperties in interface BeanLevelPropertiesAware

setClusterInfo

public void setClusterInfo(ClusterInfo clusterInfo)
Sets the ClusterInfo that will be used to configure this processing unit. When constructing the container this provider will automatically add to the application context the ClusterInfoBeanPostProcessor in order to allow injection of cluster info into beans that implement ClusterInfoAware.

Specified by:
setClusterInfo in interface ClusterInfoAware
Parameters:
clusterInfo - The cluster information to be injected

setClassLoader

public void setClassLoader(ClassLoader classLoader)
Sets the class loader this processing unit container will load the application context with.

Specified by:
setClassLoader in interface ClassLoaderAwareProcessingUnitContainerProvider

addConfigLocation

public void addConfigLocation(Resource resource)
Adds a config location using Springs Resource abstraction. This config location represents a Spring xml context.

Note, once a config location is added that default location used when no config location is defined won't be used (the default location is classpath*:/META-INF/spring/pu.xml).

Specified by:
addConfigLocation in interface ApplicationContextProcessingUnitContainerProvider

addConfigLocation

public void addConfigLocation(String path)
                       throws IOException
Adds a config location based on a String description using Springs PathMatchingResourcePatternResolver.

Specified by:
addConfigLocation in interface ApplicationContextProcessingUnitContainerProvider
Throws:
IOException
See Also:
PathMatchingResourcePatternResolver

setDeployPath

public void setDeployPath(File warPath)
Sets the deploy path where the exploded war jetty will work with is located.

Specified by:
setDeployPath in interface DeployableProcessingUnitContainerProvider

createContainer

public ProcessingUnitContainer createContainer()
                                        throws CannotCreateContainerException
See the header javadoc.

Specified by:
createContainer in interface ProcessingUnitContainerProvider
Returns:
A newly created processing unit container.
Throws:
CannotCreateContainerException

GigaSpaces XAP 7.0 API

Copyright © GigaSpaces.