# Reggie
v3.0.0 Release Notes

### Description

"Reggie" is the name of the contributed Jini lookup service implementation from Sun Microsystems. The specification for the River lookup service is available in HTML.

The specification for Reggie is defined not only by the Jini Lookup Service Specification, but also by the API documentation (generated by the Javadoc(TM) tool) for `Administrable`.

### Changes since the v2.2.0 release

None

### Changes since the v2.2.0 release

- [RIVER-374] - Review how LookupLocator is used to provide host and port details for LookupLocatorDiscovery
- [RIVER-11] - LookupLocatorDiscovery ignores new LookupLocator instances for which only constraints differ

### Changes since the v2.1.1 release

- [RIVER-225] - NullPointerException in Reggie during destroy
- [RIVER-246] - Consider adding shutdown hook so Reggie sends final multicast packet if its VM is terminated

### Changes since the v2.1 release

None

### Changes since the v2.0.1 release

Handling of Evolved Types
  Consider the case where service `S` has been deployed in a network, and `S` needs to be modified to implement a new interface. Let's call the modified service `S'`. In previous versions of Reggie, a client would not find a proxy to `S'` when doing a lookup by the new interface unless the `S'` proxy class was renamed. This version of Reggie allows a client to find a proxy to `S'` when doing a lookup by the new interface, even if the name of the proxy class has not been changed and there are instances of `S` already registered.

Reuse of Multicast Announcements
  Reggie now reuses multicast announcements when there are no changes in host, port, or group information in order to minimize the expense of signing announcement packets in deployments that have been configured to use secure discovery.

Delayed Verification of Multicast Requests
  Reggie also delays verifying signatures on multicast requests until it can determine that it must reply to the request. This minimizes the expense of verifying signatures in deployments configured with secure discovery.

Socket Connection Timeout when Replying to a Multicast Request
  This version of Reggie allows a deployer to specify a timeout to be applied when establishing a connection to the multicast response server of a client attempting to discover Reggie. The timeout can be specified by adding a `ConnectionRelativeTime` constraint to Reggie's `discoveryConstraints`. For information on additional constraints supported by Reggie, refer to `Reggie's manual pages`

Modifications to Reggie's Proxies
  Reggie's `ServiceRegistrar`, `ServiceRegistration`, `Lease`, and admin proxies now override `java.lang.Object.toString()` to facilitate debugging by providing additional information, like Reggie's `ServiceID` and underlying Java (TM) Remote Method Invocation (Java RMI) stub.

  The communication protocol used between Reggie and its main proxy has been modified to enable handling of evolved types. This new protocol is not compatible with that of earlier releases.

Log File Format
  The log file format used by the persistent version of Reggie in this release is not compatible with that of earlier releases.

Bug Fixes
  - 4939735 - Reggie doesn't refresh self-registration on restart
    The persistent version of reggie no longer stores its self-registration; rather, the self-registration is recreated each time reggie is restarted to allow for configuration or export changes to be reflected in the proxy reggie registers with itself.
  - 5002218 - Reggie should properly handle remote calls that arrive before initialization is complete
    Calls that arrive while reggie is in the process of initializing will now block until reggie has completed its initialization. Calls that arrive after reggie has commenced its shutdown process will now result in a `java.rmi.NoSuchObjectException`.

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.