#
Apache River
v3.0.0 Release Notes

## Bugs fixed and RFEs included since v2.0.2

BugID | Synopsis
--- | ---
4285733 | Is the Transaction spec correct about permissible votes?
4339945 | A String constructor would be useful
4394196 | Txn specs fixes
4515972 | reggie proxy needs better handling of attribute class evolution on results
4754465 | Race condition between logging takes and competing queries
4761012 | prepareAndCommit semantics amibiguous wrt idempotentcy
4761338 | Implement specification changes for prepareAndCommit
4829916 | (spec) clarify unicast response requirements for null format ID
4829931 | (spec) misc. discovery spec edits
4829967 | x500 providers should throw SecurityException if permission not granted
4835830 | Add per-service proxy preparer support
4842263 | AIH.readObject should throw InvalidObjectException if constraints inconsistent
4847430 | ActivationGroup spec has hyperlink to phoenix doc (broken for pure spec)
4849572 | (spec) Outbound/InboundRequest.populateContext @throws UOE should be conditional
4850188 | (spec) negotiate flag in ClientConnectionHeader message is not specified
4850190 | (spec) wrong offsets for (Client/Server)ConnectionHeader messages
4854157 | (spec) BasicILFactory.createInvocationDispatcher missing @throws IllegalArgExcep
4854291 | utility method for logging with Throwable and message parameters
4855643 | Use smaller date format in Phoenix debug output
4855674 | ConfigurationFile: support string concatenation via the '+' operator
4856303 | KerberosEndpoint spec too restrictive on TGT that exclude cross realm TGTs
4856365 | (perf) reduce copying in stream-based mux implementation
4856421 | (spec) PreferredClassProvider.load(Proxy)Class is underspecified
4856937 | Service starter should permit specifying dynamic policy provider
4858623 | change ExportClassLoader to use context class loader for parent
4858748 | (mux) a few other places where low-level cause exceptions could be helpful
4863362 | (spec) passing null codebase and codebase property value explicitly aren't equiv
4866385 | (spec) HTML tables missing "summary" attributes
4866391 | (spec) HTML tables missing "summary" attributes
4866392 | (spec) HTML tables missing "summary" attributes
4866817 | X500Server could checkClientSubject before verifying signature
4867039 | ConstrainableLookupLocator could use a toString
4867820 | signed multicast announcements can overwhelm LookupDiscovery
4867873 | reggie should reuse multicast announcements
4867879 | check for dup/ignorable multicast requests before verifying signature
4868839 | Make utility class constructors private
4869101 | Moving lease creation from server to proxy results in significant speed up
4872546 | incorrect IllegalArgumentException spec for MethodDesc constructor
4879947 | JoinManager should support changing the service proxy
4888628 | DelegationAbsoluteTime should say Dates are neither modified nor retained
4896425 | Adding a getHostAddress() method to ConfigUtil
4905288 | JrmpExporter constructors should specify NPE thrown if activation ID == null
4912732 | two JoinManager constructors reference uninitialized callback field
4912745 | TxnManagerTransaction implements Serializable but isn't
4912755 | AccessPermission.readObject is needlessly synchronized
4912757 | ExecPermission.readObject is needlessly synchronized
4917993 | (spec) ActivatableInvocationHandler wrapping of ConnectException
4936006 | ServiceDescriptor's should support non-file-based classpath entries
4939735 | reggie doesn't refresh self-registration on restart
4944080 | Make service descriptors Serializable
4944365 | landlord release note reference old class
4944369 | missing character in RetryTask.run method javadoc
4949523 | SDM - More guidance on non-blocking lookups might be helpful
4950873 | ConfigurationFile should allow extra comma in array initializers
4963846 | SSL and HTTPS providers do not specify behavior of listen endpoints
4964428 | reggie threads should guard against lost interrupts
4964547 | (http) copy/paste error in net.jini.jeri.http package specification
4965176 | (spec) Kerberos provider does not specify behavior of its listen endpoints
4965734 | Browser should do pack/show in event dispatch thread
4965775 | Norm threads should guard against lost interrupts
4966236 | ConfigurationFile Reader constructors should document they complete reading
4966260 | Mercury threads should guard against lost interrupts
4966262 | Mahalo threads should guard against lost interrupts
4968476 | ConfigurationFile should provide line number information in exceptions
4968479 | ConfigurationFile constructors should document Readers are not closed
4971803 | PreferredClassProvider downloads preferred list with no security manager
4974196 | Add synchronous event access method(s) to the event mailbox
4975726 | (ssl/https) Accept loop can exit without closing server socket
4975734 | (tcp) accept loop can exit without closing server socket
4975747 | (http) accept loop can exit without closing server socket
4976835 | implement toString() for various LUS proxies
4976991 | (http) support system property for disabling use of persistent connections
4979612 | Fiddler relies on LookupLocator.equals to determine interest in discovered Regs
4981142 | HttpmdUtil.computeDigestCodebase should support URLs for sourceDirectory
4981280 | overflow detection incorrectly implemented when deserializing AbstactLease
4981294 | (x500) Permit specifying URL for truststore
4984939 | Fiddler threads should guard against lost interrupts
4986076 | Hello example has typo in ConfirmingInvocationHandler
4993978 | DiscoveryV2 instance cache unnecessarily pins class loaders
4998092 | discovery provider instantiation triggers JDK security/crypto initialization
4998350 | make "invalid method hash" exception message more explanatory
5002097 | Kerberos provider should trigger JDK security/crypto initialization lazily
5002184 | Blocking calls in server during destroy processing maxes CPU
5002218 | properly handle remote calls that arrive before initialization is complete
5008065 | properly handle remote calls that arrive before initialization is complete
5008066 | properly handle remote calls that arrive before initialization is complete
5008872 | (http) accept loop should synchronize on 'lock', not ListenHandle
5008876 | (tcp) accept loop should synchronize on 'lock', not ListenHandle
5015237 | LRM does not log lease renewal failures if no listener is specified
5015331 | (spec) add PreferredClassLoader constructor with URLStreamHandlerFactory paramet
5016661 | Mahalo should retreive TaskManager objects from configuration
5017763 | (ssl) SslServerEndpoint can terminate calls on session expiration
5024471 | Reggie should detect service proxy class evolution
5024489 | (spec) Allow BasicJeriTrustVerifier subclasses to customize InvHandler class check
5026057 | provide info about failed participants to txn client
5027691 | AbstractLease does not synchronize reads & writes of expiration and serialFormat
5028519 | PolicyFileProvider construction fails if java.security.policy not set
5029033 | (spec) expose protected method in PreferredClassProvider for creating loaders
5030885 | clean target should not rm -rf core
5032442 | (spec) package doc typos
5033863 | add ability to specify JAR manifest to JarWrapper
5034566 | (spec) javadoc not inherited from JDK classes as expected
5037014 | UnusableEntryException does not check for array consistency
5037037 | (spec) Optional nature of BasicJeriExporter DGC could be clearer
5037046 | (spec) Kerberos provider does not provide DGC
5037048 | LRM should document renewal algorithm in @org.apache.river.impl section
5037681 | wrong set used in ClientLeaseMapWrapper.EntryIterator
5040025 | There should be a way to specify the threshhold for renewal
5042473 | FiddlerImpl.SetLocatorsTask handles NO_LOCATORS incorrectly
5046013 | ReferentUuids should not have a public constructor
5048955 | StoreConflictException is not used
5049735 | Fiddler should properly handle remote calls that arrive before init completes
5050069 | transport endpoints should try all IP addresses for hostname
5051052 | ClientLeaseWrapper drops log updates
5054114 | DynamicPolicyProvider.DomainPermissions pins ProtectionDomain key
5054742 | Transaction spec does not specify whether or not participant commit is atomic
5054769 | UnusableEntryException.printStackTrace should print nested exceptions too
5057031 | norm doesn't expire renewal set leases
5058358 | Lease javadoc needs to indicate advisory nature of getExpiration
5059955 | Outrigger threads should guard against lost interrupts
5060666 | ServiceItem misspelled in LU.2.4
5067147 | Add null check to SharedActivatableServiceDescriptor.create()
5067417 | add multi-dir support to ClassServer
5069114 | (kerberos) accept loop can exit without closing server socket
5070712 | javadoc build is missing some discovery packages
5071128 | SharedActivationGroupDescriptor.create javadoc bug
5072939 | browser doc misleading about requirement to implement JoinAdmin
5073859 | browser fails ungracefully when browsing a non-outrigger JavaSpace
5074009 | (https) HttpsEndpoint does not flush connections on proxy settings change
5074910 | (https) HttpsEndpoint via proxy does wrong permission check on caller
5082048 | Doc should state that activation group command line requires phoenix-init.jar
5084854 | Hello example has classes that need a SerialVersionUID
5084950 | potential cancel/expiration race in norm
5087833 | (tcp) support unresolvable host names for connection reuse security check
5088186 | (ssl/https) use socket host/port for connection reuse security check
5088187 | (kerberos) use socket host/port for connection reuse security check
5088205 | (http) clarify/revise connection reuse security checks
5088319 | (spec) precedence of multiple entries that match a nested class is ambiguous
5088599 | change hello example to not use md5
5088609 | ComputeDigest defaulting to md5 might be a bad idea
5088610 | JarWrapper defaulting to md5 might be a bad idea
5088724 | (spec) inaccurate statement about class names that start with "java."
5089417 | LookupBenchmark needs to be updated to use PersistentRegistrarImpl
5089422 | benchmark.jar needs update to manifest to be an executable jar
5090332 | Specifying WakeupManager in JoinManager configuration causes thread leak
5091282 | make WakeupManager.ThreadDesc.thread method public
5091298 | Listener needs to be updated so that it doesn't extend UnicastRemoteObject
5091878 | MulticastFindRegistrar benchmark is prone to deadlock
5096194 | unmarshalling code should not construct new instances of java.lang.Boolean
5096711 | Code should not construct new instances of java.lang.Boolean
5096716 | Code should not construct new instances of java.lang.Boolean
5096720 | Code should not construct new instances of java.lang.Boolean
5099898 | spec for discovery format ID computation does not match implementation
5100499 | LeaseMapException should check exceptionMap
5101300 | Reggie updates attributes on its join state before resolving attribute classes
5102733 | SDM cache.notifyServiceMap does not use event ID in its decision process
5105843 | Security class missing doPrivileged around getContextClassLoader
5110238 | DOC - JoinManager.setAttributes javadoc does not document NPE as specified
5110241 | JoinManager spec change - lease from discarded LUS should be cancelled, not removed (JU.5.1)
6174979 | Hello Example - provide for personalized lookup group when running hello example
6175907 | ServiceStarter enable JSK Browser
6176660 | group VM creation failure can leave GroupEntry in inconsistent state
6176663 | termination of phoenix process can block on shutdown hook if graceful shutdown has already begun
6176919 | Classes in net.jini.core.lookup package should implement toString method to ease debugging
6176946 | Add detailed toString() to transaction objects
6178423 | LookupDiscovery does not use multicastRequestHost config on InetAddress.getLocalHost exception
6178564 | ConfigurationFile should indicate class was not found if class was not found while resolving a call
6179194 | The system freezes with a lot of sockets in CLOSE_WAIT.
6180279 | Possible memory issue with DynamicPolicyProvider WeakGroup allocation.
6180534 | RegistrarImpl.setUnicastPort should synchronize before testing unicastPort value
6181039 | (ssl/https) can't simultaneously export objects on same ListenEndpoint but different ServerEndpoints
6181041 | (kerberos) can't simultaneously export objects on same ListenEndpoint but different ServerEndpoints
6181162 | JoinManager should create default LDM only when no DiscoveryManagement is configured
6181851 | Ambiguity in LookupLocator, ConstrainableLookupLocator jini-scheme URL spec, implementation.
6182061 | NotifyOnSrvcLeaseExpiration fails with Service ID Received != Service ID Expected
6182074 | MultipleEvntLeaseRenewals fails with "wait duration is invalid (<= 0)"
6182079 | LeaseMapRenew fails with "wait duration is invalid (<= 0)"
6182080 | LeaseExpiration fails with "waited 27 seconds, but no discovery event received for the first lookup"
6186985 | (ssl) ArrayIndexOutOfBounds when specifying ClientMinPrincipal (or Max) with insufficient permission
6189036 | (tcp) TcpServerEndpoint may leak host name information on UnknownHostException
6189770 | (spec) MarshalledInstance get method does not specify classloaders.
6190278 | change WakeupManager so kicker thread only exists when needed
6192774 | (ssl) SslServerEndpoint may leak host name information on UnknownHostException
6192775 | (http) HttpServerEndpoint may leak host name information on UnknownHostException
6192779 | (kerberos) KerberosServerEndpoint may leak host name information on UnknownHostException
6194097 | LRM impl doc should note assumption that task manager has 1.0 load factor
6194337 | catch SecurityException in org.apache.river.action Actions
6195367 | ClassDep NPE if resource bundle not found
6195368 | CheckConfigurationFile NPE if resource bundle not found
6195370 | ClassServer NPE if resource bundle not found
6195538 | (spec) LookupLocator does not specify what discovery protocol it uses.
6198760 | LookupLocator, discovery management should attempt unicast discovery on all IP addresses
6199550 | eliminate duplicate permission checks for a codebase
6201948 | Outrigger fails to unblock takes when last conflicting read lock is prepared
6202497 | fiddler-dl.jar is missing net.jini.lookup.entry.Comment attribute class
6202650 | JoinManager should allow configurable control of lease renewal interval
6203888 | DiscoveryManagement.addDiscoveryListener javadoc bug
6206473 | reggie should allow a limit on the time it waits for a connection to a multicast response server
6207752 | Specifying WakeupManager in LookupLocatorDiscovery configuration causes thread leak
6207769 | LookupDiscovery holds 'registrars' lock while doing remote operations
6208587 | SDM should create default LDM only when no DiscoveryManagement is configured
6208619 | JoinManager and SDM discoveryManager config entry default typo
6209059 | LookupDiscovery should allow specifying an initial unicast discovery delay
6211452 | change ActivateWrapper.ExportClassLoader to subclass PreferredClassLoader
6213757 | allow configurable Exit menu ActionListener in Browser
6214254 | Security.Context.isTrustedObject logging at FAILED now problematic
6214287 | LookupDiscovery starts multiple unicast discoveries to the same lookup service
6214821 | JoinManager.createJoinManager should not swallow all ConfigurationExceptions
6214823 | LLD.init should not swallow all ConfigurationExceptions
6214825 | SDM.init should not swallow all ConfigurationExceptions
6214828 | LookupDiscovery.init should not swallow all ConfigurationExceptions
6215179 | ServerTransaction.equals(null) will throw NullPointerException
6215208 | JoinManager race - repeated UnknownLeaseException-Reregistration-UnknownLeaseException
6216092 | reggie treats null value for loginContext configuration entry different from most other services
6218914 | Arrays.asList calls can throw NullPointerException
6219071 | org.apache.river.discovery.DiscoveryConstraints should support ConnectionAbsoluteTime
6220938 | update Browser package.html for jsk-dl.jar in codebase
6221238 | update package.html for jsk-dl.jar in codebase
6221240 | update package.html for jsk-dl.jar in codebase
6221243 | update package.html for jsk-dl.jar in codebase
6222457 | Service Browser should utilize JavaSpace05.contents to browse JavaSpaces entries
6223131 | AbstractEntry.equals(Entry, Entry) throws NullPointerException if either argument is null
6223535 | AbstractEntry does not filter out non-reference type fields
6223544 | AbstractEntry.fieldInfo method not properly synchronized
6223824 | reliability test fails quickly when using Jeri with NIO
6224819 | (kerberos) KerberosServerEndpoint does a checkAccept on the host name instead of the host IP address
6224821 | (ssl) SslServerEndpoint does a checkAccept on the host name instead of the host IP address
6225687 | logging in PreferredClassLoader causes deadlock
6226306 | Fiddler should allow null value for loginContext config entry, performing no JAAS login when null
6226799 | reggie should try all IP addresses a host name in a multicast request packet resolves to
6226802 | increase the default number of threads in reggie's thread pool
6227284 | Interrupted flag in outrigger.logstore.BackEnd should be declared volatile
6227535 | PreferredClassLoader implementation incorrectly determines the effective host of a "jar:" URL
6227545 | PreferredClassLoader should not depend on getURLs()
6229032 | race condition in SelectionManager custom wakeup mechanism can terminate I/O thread
6229045 | configentry/mahalo-transient missing settlerPool and taskPool entries
6229047 | mercury configentry files missing some entries
6229057 | reggie configentry missing entries
6229060 | JoinManager configentry missing an entry
6229342 | configentry/start missing entry
6229426 | Spelling error in ActivateWrapper javadoc
6229448 | ClassDep man page should document use of classdep.jar
6229450 | ClassServer man page should document use of classserver.jar
6230044 | Mercury should pass marshalled instances of RemoteEvents to "pull" clients
6230893 | ServiceConfigurationError.class should not be preferred in mercury-dl.jar
6230896 | ServiceConfigurationError.class should not be preferred in mahalo-dl.jar
6230934 | EventLogFactory needs to initialize transient logs too
6231051 | reggie-dl.jar preferred list may override value for ServiceConfigurationError in jsk-dl.jar
6231585 | NullPointerException when TransientEventLog.moveAhead() called with null arg
6231665 | reggie manual pages should include additional examples
6231721 | TransientEventLog needs a better event traversal strategy
6231910 | reggie man page missing getProxyVerifier target for RegistrarPermission
6232020 | PreferredClassProvider.getClassLoader doesn't throw MalformedURLException with no security manager
6232445 | flawed retry logic for DGC dirty calls
6232861 | Hello example regression: failure for jrmp-phoenix with activatable-jeri-server
6233208 | Hello example - simplify execution to improve the out-of-box experience
6234415 | The CheckConfigurationFile man page should document use of checkconfigurationfile.jar
6234419 | The ComputeDigest man page should document use of computedigest.jar
6234420 | The ComputeHttpmdCodebase man page should document use of computehttpmdcodebase.jar
6234469 | ServiceStarter man page should document use of classserver.jar
6234945 | ConstrainableLookupLocator needs to be added to the definition of jsk-platform.jar
6235599 | include DebugDynamicPolicyProvider in the JSK
6236523 | phoenix-group.jar should not depend on jsk-lib.jar
6237435 | ServiceEvent toString() implementation should call getServiceID() instead of using serviceID
6239098 | Browser ServiceEditor needs a WindowListener that unexports
6242107 | Preferred list generator manpage example is incorrect
6242113 | preferred list generator requires a preferred false entry
6242221 | Make ExportClassLoader.toString() unique
6243057 | (tcp) add workaround for 4720952
6243529 | Implement timeout functionality for pull event mailbox
6243898 | ClassServer examples and default dir should now use lib-dl, not lib
6243919 | ant "doc" target breaks package @links, missing pro.zip classes
6243937 | ClassDep examples need to be changed to reflect new source directory structure
6244327 | NotifyTask::tryOnce() should call waiterNotify() from within write lock
6246686 | DestroySharedGroup.java javadoc warning
6249479 | Hello example scripts/configs/policy files should be modified to accommodate JAR refactoring
6249494 | Doc - Hello example: rewrite index.html to accommodate out-of-box simplification & quick start
6249499 | Hello example logging.properties should include/document all applicable loggers
6249535 | Hello example - Makefile no longer necessary
6250694 | PreferredListGen manpage should document inner class syntax
6250696 | javadoc for PreferredListGen -jar option is incorrect
6250700 | PreferredListGen assumes it is loaded by a URLClassLoader
6250703 | PreferredListGen should generate a default preferred entry of false
6250704 | Fix I18N error in PreferredListGen
6251392 | Blocking calls in server during destroy processing maxes CPU
6251444 | net.jini.config.ConfigurationProvider should not use 'enum' as an identifier
6251462 | Reggie should not use Thread.yield() since this call can translate to a no-op in certain VMs
6252223 | LookupDiscovery should log more contextual information on unicast discovery failure
6254240 | ClassDep uses "enum" as variable name
6254347 | have PreferredClassLoader include codebase in detail message of ClassNotFoundException it creates
6257304 | Memory Leak in Transient Mahalo
6260013 | Outrigger should be should't need "-source 1.4" when compiled with Java5 javac
6260715 | make javac debuglevel user customizable
6260980 | Hello example - ClientAuthentication.YES --> NO in act-ssl-server.config'a activataionIdPreparer
6261062 | Hello example client should prepare service proxy inside SDM using ServiceItemFilter
6261071 | Hello example should use classserver.jar wrapper JAR file instead of tools.jar
6261615 | Hello example build.xml does not generate Server_Stub from local hello directory (only from top)
6261741 | phoenix man page security policy example needs revision
6264220 | Give subclasses of WakeupManager some way to create Tickets
6265395 | NonActivatableServiceDescriptor should prepare client-side proxy
6266545 | NASD/AW should allow for customization of their LoaderSplitPolicyProvider parameters
6266695 | SDM can hang when remote lease cancel request is made to discarded lookup - remove lease instead
6268601 | provide jar files with local var debug info
6269570 | ClassLoaderUtil.getClasspathURLs does not properly escape spaces, causes phoenix group to fail
6270983 | ClassDep example cmd lines assume jsk classes have been built
6272537 | ant "doc" target has @org.apache.river.impl content disabled
6273422 | mux'd connections: input ration exceeded during overlapping calls
6274625 | installer: installverify/support/startAll.config should use classserver.jar rather than tools.jar
6277229 | browser man page graphics are out of date
6277231 | change title of browser main window
6279426 | (Javadoc) Example SharedActivationPolicyPermission has unbalanced quotes
6283337 | PreferredClassLoader should explicitly close InputStream used to read preferred list
6283725 | Endpoint implementations shouldn't reuse a Socket object after connect throws IOException
6283817 | Reggie should create a new Socket for each connection attempt to a multihomed multicast rqst client
6284753 |
    Creation of preferred list for jsk-lib.jar should use preferredlistgen
6286808 |
    provide workaround for ClassCircularityError
6288635 |
    InternalManagerException produces an UnmarshalException, masking the real problem
6288832 |
    (JavaDoc) Logger names in package.html don't match actual names used in the code
6288833 |
    (JavaDoc) Logger names in package.html don't match actual names used in the code
6288881 |
    ComputeHttpmdCodebase javadoc contains incorrect directory
6289999 |
    phoenix man page corrections
6290649 |
    Installer: Should not allow whitespace in hostname
6291171 |
    ByteArrayWrapper hash code not calculated properly
6291261 |
    Installer: classes dir not fully populated
6291851 |
    SDM generates spurious removed events
6292319 |
    Log problem messages at WARNING/SEVERE
6293657 |
    BasicInvocationHandler needs to be more conservative about remote methods
6293660 |
    ActivatableInvocationHandler needs to be more conservative about remote methods
6294761 |
    SDM.notifyServiceMap() should allow logging the fact that a gap has occurred in the event sequence
6295042 |
    (doc) PreferredListGen manpage/javadoc contains confusing/misleading description
6297305 |
    Bug in sync logic in LogOutputFile.nextPath
6300885 |
    AggregateSecurityContext should avoid calling setContextClassLoader when possible
6300889 |
    ObjectTable.Target should avoid calling setContextClassLoader when possible
6302505 |
    TaskManager.removeTask should not interrupt itself
6303237 |
    phoenix man page does not document need for jsk-dl.jar in codebase
6304035 |
    PreferredClassProvider.loaderTable can pin class loaders
6304782 |
    (mux) select thread should be more robust with unexpected exceptions like OutOfMemoryError
6305625 |
    LookupLocatorDiscovery should log host and port information on unicast discovery failure
6305645 |
    make net.jini.id.Uuid.finalize implementation even more trivial
6305661 |
    unspecified special processing of INADDR_ANY returned by RemoteServer.getClientHost()
6305878 |
    (mux) don't allocate direct buffer in MuxOutputStream constructor
6306498 |
    TaskManager should insulate callers from thread allocation failures
6306502 |
    askManager catch Throwable blocks should also catch Throwable
6306557 |
    WakeupManager catch Throwable block should also catch Throwable
6307073 |
    LogManager should protect against exception in catch(Throwable t) clause of probe thread
6307184 |
    Deadlock between adding entries and iteration
6308590 |
    Make WakeupManager.ThreadDesc's state and methods more accessible
6309209 |
    WakeupManager should insulate callers from thread allocation failures
6311226 |
    (kerberos) catch Throwable blocks should also catch Throwable
6312841 |
    Eliminate PreferredListGen dead code and cleanup private javadoc
6313595 |
    ThreadPool: log uncaught exceptions at WARNING instead of INFO
6313626 |
    Mux.setDown should be more robust about unexpected exceptions
6313663 |
    catch logging failures after catching asynchronous mux processing exceptions
6313674 |
    (tcp/http) catch logging failures after catching exceptions in socket accept loop
6315185 |
    preferredlistgen needlessly initializes classes
6315487 |
    LookupLocator needs to relax RFC 2396 requirements on host names
6316423 |
    LookupLocator needs to handle relative URIs correctly
6316428 |
    The javadoc for ServiceEvent should not constrain the source to be the generating ServiceRegistrar
6316548 |
    SDM unnecessarily assumes the event source from the lookup service is a ServiceRegistrar proxy

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.