# `org.apache.river.start`
Apache River v3.0.0 Release Notes

### Description

The Service Starter package is a collection of utilities and APIs used to launch the contributed services provided in the Apache River release.

### Changes since the v2.2.0 release

None

### Changes since the v2.1.1 release

None

### Changes since the v2.0.1 release

Bug Fixes of Interest
  The following bugs have been addressed in this release:

  4835830: Add per-service proxy preparer support
    Per-service proxy preparer support has been added to `NonActivatableServiceDescriptor` and `SharedActivatableServiceDescriptor` via constructor overloads that take proxy preparer parameters. This allows users to individually prepare the service proxies returned by service starter framework.

  4856937: Service starter should permit specifying dynamic policy provider
    `ActivateWrapper` supports the the `java.security.Security` property `org.apache.river.start.servicePolicyProvider`, which allows users to specify the fully qualified class name of a dynamic policy provider to use for wrapping individual service policies in a "shared" environment. A custom service policy provider can be very useful when trying to debug security related issues. See the start package documentation for more detail.

  4858623: change ExportClassLoader to use context class loader for parent
    `ActivateWrapper.ExportClassLoader` now uses the calling context's class loader as its parent (versus the application classpath, used previously). This allows "container" applications more control over the class loader hierarchy used when launching services.

  6211452: change ActivateWrapper.ExportClassLoader to subclass PreferredClassLoader
    `ActivateWrapper.ExportClassLoader` now extends `PreferredClassLoader` instead of `URLClassLoader`. A service can now specify a preferred list for its import class path, to ensure that any classes that need to be annotated with the server's codebase get loaded by the server's class loader rather than accidentally being resolved in the container.

  4868839: Make utility class constructors private
    The following utility classes simply contain static methods and are not meant to be instantiated:
    - `ClassLoaderUtil`
    - `DestroySharedGroup`
    - `HTTPDStatus`
    To ensure this, private constructors have been added to each of the above classes.

  4936006: ServiceDescriptor's should support non-file-based classpath entries
    The `importCodebase` parameter in the constructors for `NonActivatableServiceDescriptor` and `SharedActivatableServiceDescriptor` now support either:
    - a space delimited set of `URL`(s) representing a codebase or
    - a `File.pathSeparator` delimited set of class paths.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.