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.
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 avoid possible deadlock, however this is no longer necessary if using
DynamicPolicyProvider
with
ConcurrentPolicyFile
as the default base policy.
It will not be possible to use the extension facility with Java 9.
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.
jsk-platform.jar
ClassLoading
,
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
org.apache.river.discovery
net.jini.discovery.ConstrainableLookupLocatorTrustVerifier
net.jini.discovery.ConstrainableLookupLocator
org.apache.river.config.KeyStores
org.apache.river.config.ConfigUtil
org.apache.river.LogManager
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
and
ClassLoading
providers:
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
org.apache.river.admin
org.apache.river.landlord
org.apache.river.lease
org.apache.river.lookup.entry
org.apache.river.proxy
org.apache.river.resource
org.apache.river.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
org.apache.river.admin
org.apache.river.lease
org.apache.river.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.
org.apache.river
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.
Some points of note:
The persistent version of Outrigger relies on a pluggable persistence
layer, org.apache.river.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
org.apache.river.outrigger.store
configuration entry (or add a
store configuration entry if you don't already have one) to yield a
org.apache.river.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.
org.apache.river.thread