Apache River is aimed at the development and advancement of the River technology core infrastructure. It is a top level Apache project. River technology is a service oriented architecture that defines a programming model which both exploits and extends Java technology to enable the construction of secure, distributed systems which are adaptive to change.
If you would like to submit a bug against the Apache River release, please use the
River JIRA.
To discuss problems, questions, or suggestions on the release, please subscribe
to the river-dev
list from the
project Mailing Lists page.
Some points of note:
The persistent version of Outrigger relies on a pluggable persistence
layer, com.sun.jini.outrigger.Store
. Previous releases
of the Starter Kit included two implementations of the Store interface,
logstore and snaplogstore. This release removes
logstore.
Logstore has been around in various forms since the 1.0 version of Outrigger. Snapstore was introduced in v2.1 of the Starter Kit.
The v2.0.n releases of the Starter Kit used logstore as the default Store
implementation, this release has no default Store. In order to switch an
existing set of configuration files, security policy files, etc., from using
logstore to snaplogstore, you will need to change the
com.sun.jini.outrigger.store
configuration entry (or add a
store configuration entry if you don't already have one) to yield a
com.sun.jini.outrigger.snaplogstore.LogStore
object. You
will also need to ensure that outrigger-snaplogstore.jar
has
been granted sufficient permissions (see Outrigger's package documentation
for a sample security policy file.).
Note that depending on the nature of your application snaplogstore can have a significantly different performance profile than logstore.
The storage formats used by snaplogstore and logstore are mutually incompatible.
jsk-policy.jar
DynamicPolicyProvider
, that supports dynamic
granting of permissions at run time. Although use of this policy provider
is not required, its use is highly recommended when deploying secure
applications and services. To permit effective use of this policy provider,
it must first be installed as an extension in the Java 2 SDK (or JRE)
that you will be using, as described in the
installation instructions.
This is the only JAR file that we recommend installing as an extension.
To use this provider, you need to define a security property (not a system property):
policy.provider=net.jini.security.policy.DynamicPolicyProviderin some file (for example, named
security.properties
) and
then define a system property:
-Djava.security.properties=path-to-file/security.propertieswhen running your application. If you are using a Java 2 SDK (or JRE) from a vendor other than Sun, you may also need to set a security property:
net.jini.security.policy.PolicyFileProvider.basePolicyClass=provider-classin the same
security.properties
file, where
provider-class is the vendor's default policy provider class,
which typically can be found as the value of the policy.provider
security property in the jre/lib/security/java.security
file of
the Java 2 SDK installation.
jsk-platform.jar
RMIClassLoader
,
TrustVerifier
,
IntegrityVerifier
,
ServerContext
,
and
DiscoveryFormatProvider
providers
ConfigurationFile
source files, but which are unlikely to be referenced directly by the
applications and services being configured (in particular, classes for
creating
Exporter
and
ProxyPreparer
instances and their components)
This JAR file contains all of the classes and interfaces in the following namespaces (including all subpackages):
net.jini.activation
net.jini.config
net.jini.constraint
net.jini.core
net.jini.export
net.jini.id
net.jini.iiop
net.jini.io
net.jini.jeri
net.jini.jrmp
net.jini.loader
net.jini.security
net.jini.url
com.sun.jini.discovery
This JAR file includes a protocol handler for HTTPMD URLs. To enable this handler, you need to specify the system property:
-Djava.protocol.handler.pkgs=net.jini.urlin any application that creates or receives such URLs. In particular, any service that uses an HTTPMD URL in its codebase, and any client that wants to download code from such a service, should set this system property.
It is important to understand that the contents of this JAR file do not constitute a "standard" platform; this JAR file is simply our choice of a platform likely to be useful for deployments of this release. Depending on your deployment requirements, you may want to alter the contents of this JAR file (but if you do so, you also might have to make changes to other JAR files).
jsk-resources.jar
Class-Path
manifest attribute
of jsk-platform.jar
, and configures the following specific
service providers to be used:
RMIClassLoader
provider:
TrustVerifier
providers:
IntegrityVerifier
providers:
ServerContext
providers:
DiscoveryFormatProvider
s for the following discovery formats:
net.jini.discovery.plaintext
net.jini.discovery.ssl
net.jini.discovery.kerberos
net.jini.discovery.x500.SHA1withDSA
net.jini.discovery.x500.SHA1withRSA
jsk-lib.jar
Class-Path
manifest attribute
of many Apache River release implementation JAR files, and contains the utility
APIs that are not tied to a specific service implementation.
This JAR file contains all of the classes and interfaces in the following namespaces (including all subpackages):
net.jini.admin
net.jini.discovery
excluding ConstrainableLookupLocatorTrustVerifier
which is contained in jsk-platform.jar
net.jini.entry
net.jini.event
net.jini.lease
net.jini.lookup
net.jini.space
com.sun.jini.admin
com.sun.jini.landlord
com.sun.jini.lease
com.sun.jini.lookup.entry
com.sun.jini.proxy
com.sun.jini.resource
com.sun.jini.thread
jsk-dl.jar
jsk-lib.jar
. An application that includes
jsk-lib.jar
in its class-path may also need to include jsk-dl.jar
in its codebase.
This JAR file contains all of the classes and interfaces in the following namespaces (including all subpackages):
net.jini.admin
net.jini.entry
net.jini.event
net.jini.lookup.entry
excluding EntryBeans
net.jini.space
com.sun.jini.admin
com.sun.jini.lease
com.sun.jini.proxy
LookupDiscoveryRegistration
LookupDiscoveryService
LookupUnmarshalException
RemoteDiscoveryEvent
LeaseRenewalService
LeaseRenewalSet
LeaseUnmarshalException
RenewalFailureEvent
ConstrainableLandlordLease
ConstrainableLandlordLeaseMap
Landlord
LandlordLease
LandlordLeaseMap
LandlordProxyVerifier
Levels
BasicServiceType
ServiceConfigurationError
ServiceProxyAccessor
start.jar
Class-Path
manifest
attribute that references jsk-platform.jar
.
sharedvm.jar
Class-Path
manifest attribute that references both
jsk-platform.jar
and phoenix-init.jar
.
destroy.jar
group.jar
SharedActivatableServiceDescriptor
in a configuration file
passed to destroy.jar
.
group-dl.jar
group.jar
, used in the same
service descriptor as above for group.jar
.
service.jar
, and a codebase JAR
file with a name of the form service-dl.jar
.
The service JAR file contains the service implementation itself, and
can be thought of as the class path for the service. The
service JAR file generally contains three versions of the service:
a transient (non-activatable, non-persistent) version; a non-activatable,
persistent version; and an activatable, persistent version. In this release,
Mahalo and Mercury do not yet provide transient versions. The service
JAR file is designed to be run under the Service Starter, and as such
is not directly executable.
The service JAR file's Class-Path
manifest attribute refers to jsk-lib.jar
.
The codebase JAR file is used as the
codebase annotation for the service; it contains classes and interfaces
that are used by the service's proxies and trust verifiers, and that clients
need to dynamically download. The codebase JAR file also contains a
preferred list for use by clients that have the
PreferredClassProvider
enabled.
The codebase JAR file does not include any of the classes or interfaces found
in jsk-dl.jar
therefore jsk-dl.jar
must be included
in the service's codebase annotation. The codebase JAR should come first in
the codebase annotation, so that its preferred list is obeyed, rather than the
one in jsk-dl.jar
.
Neither the service JAR file nor the codebase JAR file include any of the
classes or interfaces found in jsk-platform.jar
: the Service
Starter container (either start.jar
or sharedvm.jar
)
provides these classes for the service implementation, and clients are
expected to have jsk-platform.jar
in their class path.
fiddler.jar
fiddler-dl.jar
mahalo.jar
mahalo-dl.jar
mercury.jar
mercury-dl.jar
norm.jar
norm-dl.jar
outrigger.jar
outrigger-dl.jar
reggie.jar
reggie-dl.jar
rmid
when deploying
activatable versions of services.
phoenix.jar
phoenix-dl.jar
rmid
,
Phoenix requires clients to dynamically download code.
phoenix-init.jar
phoenix-group.jar
ActivationGroup
implementation for Phoenix. Normally it is not referenced explicitly,
but is instead loaded automatically from the same directory as
phoenix.jar
.
tools.jar
serialVersionUID
fields; computing class dependencies;
providing HTTP service; generating message digests; generating HTTPMD URLs;
examining the run-time environment of a River component;
generating wrapper JAR files; and generating preferred lists.
When used as an executable JAR file, it runs the
ClassServer.
checkconfigurationfile.jar
tools.jar
. When used as an executable JAR file, it runs CheckConfigurationFile.
checkser.jar
tools.jar
. When used as an executable JAR file, it runs CheckSer.
classdep.jar
tools.jar
. When used as an executable JAR file, it runs ClassDep.
classserver.jar
tools.jar
. When used as an executable JAR file, it runs ClassServer.
computedigest.jar
tools.jar
. When used as an executable JAR file, it runs ComputeDigest.
computehttpmdcodebase.jar
tools.jar
. When used as an executable JAR file, it runs ComputeHttpmdCodebase.
envcheck.jar
tools.jar
. When used as an executable JAR file, it runs EnvCheck.
jarwrapper.jar
tools.jar
. When used as an executable JAR file, it runs JarWrapper.
preferredlistgen.jar
tools.jar
. When used as an executable JAR file, it runs PreferredListGen.
browser.jar
browser-dl.jar
outrigger-logstore.jar
Class-Path
manifest
attribute of outrigger.jar
, containing classes for the default
storage implementation used by the persistent versions of Outrigger. In
practice you should not need to refer directly to this JAR file.
prebuilt-outrigger-logstore.jar
outrigger-logstore.jar
. This JAR file is never used at runtime,
it is only used if you attempt to rebuild the Apache River release from sources and
do not have the necessary ObjectStore PSE Pro for Java postprocessor tool.
In practice you should not need to refer directly to this JAR file.
jini-core.jar
net.jini.core
namespace. No direct use of this JAR file
is made in this release; it is simply provided as a possible convenience
to developers. This JAR file has been deprecated in this release and might
not be supplied in future versions of the Apache River release.
jini-ext.jar
net.jini
namespace, plus all of the classes and interfaces
that their implementations directly or indirectly depend on, including
service providers in the com.sun
namespace that might want to be
configured in resources. The classes and interfaces in the
net.jini.core
namespace are not included directly; instead this
JAR file has a Class-Path
manifest attribute that refers to
jini-core.jar
. Note that the Class-Path
manifest
attribute does not refer to jsk-resources.jar
, so no
service providers are configured by default when using this JAR file at
runtime. Any classes or interfaces in the com.sun
namespace that
appear in this JAR file should be considered implementation details. No
direct use of this JAR file is made in this release; it is simply provided
as a possible convenience to developers. This JAR file has been deprecated
in this release and might not be supplied in future versions of the Apache River release.
sdm-dl.jar
ServiceDiscoveryManager
provided in this release.
This JAR file has been deprecated in this release and might not be supplied
in future versions of the Apache River release. The function provided by this JAR file
has been replaced by jsk-dl.jar
.
sun-util.jar
com.sun.jini
namespace that developers might want to reference.
Of particular interest are the non-standard administrative
interfaces implemented by our services, as well as the interfaces needed
by services that want to run under the Service Starter. We make no
claims about the API stability of these classes and interfaces. No direct
use of this JAR file is made in this release; it is simply provided as a
possible convenience to developers. This JAR file has been deprecated in
this release and might not be supplied in future versions of the Apache River release.
com.sun.jini
packages.
This omission was intentional; we only produced on-line API documentation
for the classes and interfaces that we think might be important or useful
to you. However, almost all of our classes and interfaces have
documentation comments, so if you wish, you can produce
API documentation for them yourself.