public class ActivateWrapper extends Object implements Remote, Serializable
This wrapper class is assumed to be available directly in the activation group VM; that is, it is assumed to be in the application classloader, the extension classloader, or the boot classloader, rather than being downloaded. Since this class also needs considerable permissions, the easiest thing to do is to make it an installed extension.
This wrapper class performs a security check to control what
policy files can be used with a given codebase.
It does this by querying the VM's (global) policy for
SharedActivationPolicyPermission
grants. The service's associated
ActivateDesc.importLocation
is used as
the CodeSource
for selecting the appropriate permission set to
check against. If multiple codebases are used, then all the codebases must
have the necessary SharedActivationPolicyPermission
grants.
An example of how to use this wrapper:
URL[] importURLs = new URL[] {new URL("http://myhost:8080/service.jar")}; URL[] exportURLs = new URL[] {new URL("http://myhost:8080/service-dl.jar")}; ActivationID aid = ActivateWrapper.register( gid, new ActivateWrapper.ActivateDesc( "foo.bar.ServiceImpl", importURLs, exportURLs, "http://myhost:8080/service.policy", new MarshalledObject( new String[] { "/tmp/service.config" }) ), true, activationSystem);Clients of this wrapper service need to implement the following "activation constructor":
where,<impl>(ActivationID activationID, MarshalledObject data)
ProxyAccessor
, which allows the service
implementation to provide a remote reference of its choosing.
This implementation of ActivateWrapper
supports the
following Security
property:
• |
com.sun.jini.start.servicePolicyProvider
| |
---|---|---|
  | Default: |
"net.jini.security.policy.DynamicPolicyProvider"
|
  | Description: | The fully qualified class name of a
dynamic policy provider (see DynamicPolicy )
which will be used to "wrap" all service policy files.
The implementation class needs to:
A custom service policy provider can be very useful when trying to
debug security related issues.
|
SharedActivationPolicyPermission
,
ActivationID
,
MarshalledObject
,
Remote
,
CodeSource
,
ProxyAccessor
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
ActivateWrapper.ActivateDesc
Descriptor for registering a "wrapped" activatable object.
|
(package private) static class |
ActivateWrapper.ExportClassLoader
A simple subclass of
PreferredClassLoader that overrides
getURLs to
return the URL s of the provided export codebase. |
Modifier and Type | Field and Description |
---|---|
private static Class[] |
actTypes
The parameter types for the "activation constructor".
|
private static AggregatePolicyProvider |
globalPolicy
The
Policy object that aggregates the individual
service policy objects. |
private Object |
impl
The "wrapped" activatable object.
|
private static Policy |
initialGlobalPolicy
The
Policy object in effect at startup. |
(package private) static Logger |
logger
Configure logger
|
private static Class[] |
policyTypes
The parameter types for the
"custom, service policy constructor".
|
private static String |
servicePolicyProvider
Fully qualified name of custom, service policy provider
|
Constructor and Description |
---|
ActivateWrapper(ActivationID id,
MarshalledObject data)
Activatable constructor.
|
Modifier and Type | Method and Description |
---|---|
private static void |
checkPolicyPermission(String policy,
URL[] urls)
Checks that all the provided
URL s have permission to
use the given policy. |
(package private) static Policy |
getServicePolicyProvider(Policy service_policy) |
static ActivationID |
register(ActivationGroupID gid,
ActivateWrapper.ActivateDesc desc,
boolean restart,
ActivationSystem sys)
Analog to
Activatable.register() for activatable objects that want
to use this wrapper mechanism. |
private static String |
urlsToPath(URL[] urls)
Utility method that converts a
URL[]
into a corresponding, space-separated string with
the same array elements. |
private Object |
writeReplace()
Return a reference to service being wrapped in place
of this object.
|
static final Logger logger
private static AggregatePolicyProvider globalPolicy
Policy
object that aggregates the individual
service policy objects.private static Policy initialGlobalPolicy
Policy
object in effect at startup.private Object impl
private static final Class[] actTypes
private static String servicePolicyProvider
private static final Class[] policyTypes
public ActivateWrapper(ActivationID id, MarshalledObject data) throws Exception
ActivateDesc
from the
provided data
parameter.
ExportClassLoader
using the
import and export codebases obtained from the provided
ActivateDesc
,
SharedActivationPolicyPermission
ExportClassLoader
and the corresponding policy file obtained from the
ActivateDesc
with the
AggregatePolicyProvider
ExportClassLoader
.
Policy
object, if any,
with a AggregatePolicyProvider
.id
- The ActivationID
of this objectdata
- The activation data for this objectException
ActivateWrapper.ExportClassLoader
,
ActivateWrapper.ActivateDesc
,
AggregatePolicyProvider
,
SharedActivationPolicyPermission
,
Policy
private Object writeReplace() throws ObjectStreamException
ObjectStreamException
public static ActivationID register(ActivationGroupID gid, ActivateWrapper.ActivateDesc desc, boolean restart, ActivationSystem sys) throws ActivationException, RemoteException
Activatable.register()
for activatable objects that want
to use this wrapper mechanism.ActivationException
- if there was a problem registering
the activatable class with the activation systemRemoteException
- if there was a problem communicating
with the activation systemprivate static void checkPolicyPermission(String policy, URL[] urls)
URL
s have permission to
use the given policy.private static String urlsToPath(URL[] urls)
URL[]
into a corresponding, space-separated string with
the same array elements.
Note that if the array has zero elements, the return value is
null, not the empty string.Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.