public class NonActivatableServiceDescriptor extends Object implements ServiceDescriptor, Serializable
create(Configuration config)
to launch the service in the invoking object's VM.
This class provides separation of the import codebase (where the service implementation classes are loaded from) from the export codebase (where service clients should load classes from, for example stubs). as well as providing an independent security policy file for each service object. This functionality allows multiple service objects to be placed in the same VM, with each object maintaining distinct export codebase and security policy settings.
Services need to implement the following "non-activatable
constructor":
where,
<impl>(String[] args,
LifeCycle lc)
A service implementation can return its service proxy
(via the LifeCycle reference.
proxy field of the
Created object returned by
create)
in the following order of precedence:
ServiceProxyAccessor then return value of
getServiceProxy
will be used as the service proxy.
ProxyAccessor
then the return value of
getProxy will be used
as the service proxy.
null will be returned as the service proxy.
NonActivatableServiceDescriptor
depends on ActivateWrapper, which can itself be configured. See
ActivateWrapper's
configuration
information for details.
This implementation obtains its configuration entries from the
Configuration object passed into
the create method.
The following configuration entries use the
component prefix "org.apache.river.start":
| • |
servicePreparer
| |
|---|---|---|
|   | Type: | ProxyPreparer
|
|   | Default: |
new
|
|   | Description: | The default proxy preparer used to prepare
the service proxy.
This value should not be null. This entry is
obtained during the invocation of
create and is used
to prepare the service proxy returned by
the service implementation
(see service proxy section for details).
This entry is superseded by explicitly passing a
ProxyPreparer to one of the constructors that
accept a proxy preparer argument.
|
Logger, named
org.apache.river.start.service.starter.
The following table describes the
type of information logged as well as the levels of information logged.
| Level | Description |
|---|---|
SEVERE | for significant service creation problems |
FINER | for high level service operation tracing |
FINEST | for low level service operation tracing |
| Modifier and Type | Class and Description |
|---|---|
static class |
NonActivatableServiceDescriptor.Created
Object returned by
NonActivatableServiceDescriptor.create()
method that returns the proxy and implementation references
for the created service. |
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
descCreated
Flag indicating when create() has been called
|
protected Object |
descCreatedLock
Lock object for
descCreated flag |
| Constructor and Description |
|---|
NonActivatableServiceDescriptor(String exportCodebase,
String policy,
String importCodebase,
String implClassName,
Configuration config,
LifeCycle lifeCycle,
ProxyPreparer preparer) |
NonActivatableServiceDescriptor(String exportCodebase,
String policy,
String importCodebase,
String implClassName,
String[] serverConfigArgs)
Convenience constructor.
|
NonActivatableServiceDescriptor(String exportCodebase,
String policy,
String importCodebase,
String implClassName,
String[] serverConfigArgs,
LifeCycle lifeCycle)
Convenience constructor.
|
NonActivatableServiceDescriptor(String exportCodebase,
String policy,
String importCodebase,
String implClassName,
String[] serverConfigArgs,
LifeCycle lifeCycle,
ProxyPreparer preparer)
Main constructor.
|
NonActivatableServiceDescriptor(String exportCodebase,
String policy,
String importCodebase,
String implClassName,
String[] serverConfigArgs,
ProxyPreparer preparer)
Convenience constructor.
|
| Modifier and Type | Method and Description |
|---|---|
Object |
create(Configuration config)
Attempts to create a service instance based on the service
description information provided via constructor parameters.
|
String |
getExportCodebase()
Codebase accessor method.
|
String |
getImplClassName()
Implementation class accessor method.
|
String |
getImportCodebase()
Classpath accessor method.
|
LifeCycle |
getLifeCycle()
LifeCycle accessor method. |
String |
getPolicy()
Policy accessor method.
|
String[] |
getServerConfigArgs()
Service configuration arguments accessor method.
|
ProxyPreparer |
getServicePreparer()
ProxyPreparer accessor method. |
void |
setLifeCycle(LifeCycle lc)
Sets the
LifeCycle object for this
descriptor. |
void |
setServicePreparer(ProxyPreparer serviceProxyPreparer)
Sets the
ProxyPreparer for this descriptor. |
String |
toString()
Prints out a field summary
|
protected transient boolean descCreated
protected final Object descCreatedLock
descCreated flagpublic NonActivatableServiceDescriptor(String exportCodebase, String policy, String importCodebase, String implClassName, String[] serverConfigArgs, LifeCycle lifeCycle, ProxyPreparer preparer)
exportCodebase - location where clients can download required
service-related classes (for example, stubs, proxies, etc.).
Codebase components must be separated by spaces in which
each component is in URL format.policy - server policy filename or URLimportCodebase - location where server implementation
classes can be found.
This String assumed (in order) to be either
1) a space delimited set of URL(s)
representing a codebase or
2) a File.pathSeparator delimited set
of class paths.implClassName - name of server implementation classserverConfigArgs - service configuration arguments. This parameter
is passed as the String[] argument to the
implementation's
constructor.lifeCycle - LifeCycle reference
for hosting environment. This parameter
is passed as the LifeCycle argument to the
implementation's
constructor. If this argument
is null, then a default, no-op LifeCycle object will
be assigned.preparer - ProxyPreparer reference. This object
will be used to prepare the service's proxy object, if any
(see service proxy section for details).
If this argument is null, then the default
service preparer will be used.public NonActivatableServiceDescriptor(String exportCodebase, String policy, String importCodebase, String implClassName, Configuration config, LifeCycle lifeCycle, ProxyPreparer preparer)
public NonActivatableServiceDescriptor(String exportCodebase, String policy, String importCodebase, String implClassName, String[] serverConfigArgs, LifeCycle lifeCycle)
contructor
with null for the preparer
reference.public NonActivatableServiceDescriptor(String exportCodebase, String policy, String importCodebase, String implClassName, String[] serverConfigArgs)
contructor
with null for the lifeCycle and preparer
references.public NonActivatableServiceDescriptor(String exportCodebase, String policy, String importCodebase, String implClassName, String[] serverConfigArgs, ProxyPreparer preparer)
contructor
with null for the lifeCycle
reference.public final String getExportCodebase()
public final String getPolicy()
public final String getImportCodebase()
public final String getImplClassName()
public final String[] getServerConfigArgs()
public final LifeCycle getLifeCycle()
LifeCycle accessor method.LifeCycle object associated with
this service descriptor.public final void setLifeCycle(LifeCycle lc)
LifeCycle object for this
descriptor. This needs to
be called on the service descriptor prior to calling
create(). Useful for (re-)setting the
the associated LifeCycle upon deserialization
of this descriptor.lc - The LifeCycle object to be
associated with this service descriptor.IllegalStateException - if called after create() is invokedpublic final ProxyPreparer getServicePreparer()
ProxyPreparer accessor method.ProxyPreparer object associated with
this service descriptor.public final void setServicePreparer(ProxyPreparer serviceProxyPreparer)
ProxyPreparer for this descriptor.
This needs to
be called on the service descriptor prior to calling
create(). Useful for (re-)setting the
the associated ProxyPreparer upon deserialization
of this descriptor.serviceProxyPreparer - The ProxyPreparer object to be
associated with this service descriptor.IllegalStateException - if called after create() is invokedpublic Object create(Configuration config) throws Exception
This method:
RMISecurityManager
if no security manager is already in place
AggregatePolicyProvider
as the VM-global policy object
(upon the first invocation of this method)
ActivateWrapper.ExportClassLoader with
the associated service's import codebase, export codebase and
the current thread's context class loader as its arguments
ExportClassLoader and the associated service's
policy file with the
AggregatePolicyProvider
ExportClassLoader as
the current thread's context class loader
<impl>(String[], LifeCycle)
ServiceProxyAccessor.getServiceProxy()
or
ProxyAccessor.getProxy(),
respectively, on the implementation instance.
If neither interface is supported, the
proxy reference is set to null
create in interface ServiceDescriptorconfig - The Configuration object
used to configure the creation of the returned object.Created instance with the service's proxy and implementation
references.Exception - Thrown if there was any problem
creating the object.Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.