Return-Path: X-Original-To: apmail-river-dev-archive@www.apache.org Delivered-To: apmail-river-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 335071030C for ; Sun, 28 Apr 2013 14:19:01 +0000 (UTC) Received: (qmail 48274 invoked by uid 500); 28 Apr 2013 14:19:01 -0000 Delivered-To: apmail-river-dev-archive@river.apache.org Received: (qmail 48247 invoked by uid 500); 28 Apr 2013 14:19:01 -0000 Mailing-List: contact dev-help@river.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@river.apache.org Delivered-To: mailing list dev@river.apache.org Received: (qmail 48238 invoked by uid 99); 28 Apr 2013 14:19:01 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 28 Apr 2013 14:19:01 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of SRS0=Z7Bkd6=OP=wonderly.org=gregg@yourhostingaccount.com designates 65.254.253.121 as permitted sender) Received: from [65.254.253.121] (HELO mailout15.yourhostingaccount.com) (65.254.253.121) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 28 Apr 2013 14:18:54 +0000 Received: from mailscan16.yourhostingaccount.com ([10.1.15.16] helo=mailscan16.yourhostingaccount.com) by mailout15.yourhostingaccount.com with esmtp (Exim) id 1UWSQy-0006Vv-SK for dev@river.apache.org; Sun, 28 Apr 2013 10:18:32 -0400 Received: from impout01.yourhostingaccount.com ([10.1.55.1] helo=impout01.yourhostingaccount.com) by mailscan16.yourhostingaccount.com with esmtp (Exim) id 1UWSQy-0001hK-Gk for dev@river.apache.org; Sun, 28 Apr 2013 10:18:32 -0400 Received: from authsmtp08.yourhostingaccount.com ([10.1.18.8]) by impout01.yourhostingaccount.com with NO UCE id VSJY1l0080ASqTN01SJYvP; Sun, 28 Apr 2013 10:18:32 -0400 X-Authority-Analysis: v=2.0 cv=EJGEIilC c=1 sm=1 a=esYLc/7V918afB/78irpAw==:17 a=UrrH0j-4gkYA:10 a=GMbBp1EkL-YA:10 a=kj9zAlcOel0A:10 a=HCB_ZTjGAAAA:8 a=NBYMVPEeOAQA:10 a=0LiwH3idAAAA:8 a=g5OdYoK2AAAA:8 a=COfzQ7OkAAAA:8 a=0E1LvZPWsgL8KAhpg6sA:9 a=CjuIK1q_8ugA:10 a=287AhaWpYuMFjJOS:21 a=3xkojbtdA4upycny:21 a=8amoANLqcXHyoDJd6jbCBw==:117 X-EN-OrigOutIP: 10.1.18.8 X-EN-IMPSID: VSJY1l0080ASqTN01SJYvP Received: from [74.213.10.115] (helo=[192.168.1.108]) by authsmtp08.yourhostingaccount.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim) id 1UWSQy-0004qy-GY for dev@river.apache.org; Sun, 28 Apr 2013 10:18:32 -0400 References: <517CFD97.4070703@zeus.net.au> Mime-Version: 1.0 (1.0) In-Reply-To: <517CFD97.4070703@zeus.net.au> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Message-Id: <302DB712-AE05-43B9-9B3B-A34EFD7AE13A@wonderly.org> Cc: "dev@river.apache.org" X-Mailer: iPhone Mail (10B329) From: Gregg Wonderly Subject: Re: Status of River 2.3.0 Date: Sun, 28 Apr 2013 09:18:29 -0500 To: "dev@river.apache.org" X-EN-UserInfo: 5bac21c6012e8295aaee92c67842fba3:d1e94006e19829b2b3cf849ab9ff0f3c X-EN-AuthUser: greggwon Sender: Gregg Wonderly X-EN-OrigIP: 74.213.10.115 X-EN-OrigHost: unknown X-Virus-Checked: Checked by ClamAV on apache.org The obvious issue is that Java's Applet Security manager was initially explo= itable in Java-1.0, because the remote DNS config could be negotiated with, b= y the applet, to return a local network address so that name based checks wo= uld allow local network scanning to occur. We need to make sure we don't op= en that door, again. The DNS library services, in Java should keep this from happening, unless th= e default caching is changed to allow expiration. Gregg Sent from my iPhone On Apr 28, 2013, at 5:44 AM, Peter Firmstone wrote: > All qa suite tests are now passing > All jtreg tests that are known to pass are passing (those that depend on a= Kerberos Domain server and Squid do not as expected). >=20 > To address concurrency,the issue of threads starting during service server= construction (River-418), a new interface has been created: >=20 > com.sun.jini.start.Starter >=20 > Any service that uses the start package can now delay starting of threads u= ntil construction is complete. This prevents services from becoming visible= to other threads before construction is complete, for compliance with the J= MM. >=20 > All services except for Fiddler and Norm have been converted to use Starte= r, remaining services will be updated in River 2.3.1 >=20 > A JIRA issue for each service will be created to document progress on Star= ter conversion. >=20 > Security Infrastructure changes: >=20 > 1. org.apache.river.api.security.ConcurrentPolicyFile - copied > from Apache Harmony and refactored for immutable concurrency, > all implies permission checks are performed thread confined to > avoid synchronization issues with PermissionCollection > implementations. PermissonCollection's are not shared among > threads. Permissions are granted to Principals and CodeSource > signed by Certificate and / or by URI, not URL, this avoids > consulting DNS to determine URL identity. > 2. net.jini.security.policy.DynamicPolicyProvider has been > reimplemented. >=20 > Changes to Policy.getPermissions(CodeSource codesource) semantics: >=20 > The contract for Policy.getPermissions changed in Java 6: > >=20 > getPermissions > public PermissionCollection getPermissions(CodeSource codesource) > Return a PermissionCollection object containing the set of > permissions granted to the specified CodeSource. > Applications are discouraged from calling this method since this > operation may not be supported by all policy implementations. > Applications should solely rely on the implies method to perform > policy checks. If an application absolutely must call a > getPermissions method, it should call > getPermissions(ProtectionDomain). > The default implementation of this method returns > Policy.UNSUPPORTED_EMPTY_COLLECTION. This method can be > overridden if the policy implementation can return a set of > permissions granted to a CodeSource. >=20 > Parameters: > codesource - the CodeSource to which the returned > PermissionCollection has been granted. > Returns: > a set of permissions granted to the specified CodeSource. If > this operation is supported, the returned set of permissions > must be a new mutable instance and it must support heterogeneous > Permission types. If this operation is not supported, > Policy.UNSUPPORTED_EMPTY_COLLECTION is returned. >=20 > >=20 > DynamicPolicy grants are no longer included when > getPermissions(CodeSource codesource) is called, instead the method > delegates to the underlying encapsulated base policy. >=20 > ConcurrentPolicyFile getPermissions(CodeSource codesource) is > implemented to return either privileged Permissions (CodeSource's > granted AllPermission), or UNSUPPORTED_EMPTY_COLLECTION. This is > purely a performance optimisation, allowing > ProtectionDomain.implies(Permission permission) to return early for > privileged ProtectionDomain's without consulting the Policy provider. >=20 >=20 > Changes to ClassLoader infrastructure regarding codebase annotations: >=20 > 1. URL is no longer used as a Key in Collections. This changes > ClassLoading semantics slightly: > 1. Codebase annotations will be normalised as URI according to > RFC3986 and compared for equality, remote code with > identical codebases annotations will share a URLClassLoader. > 2. Previously codebases with different annotations would share > a URLClassLoader if they resolved to the same IP address. = This made firewall traversal and codebase replication > difficult and also prevented the use of dynamically assigned > IP addresses for codebase servers. > 2. A new class org.apache.river.api.net.Uri has been provided to > implement RFC3986 compliance, it was copied from Apache Harmony > and updated to strictly comply with RFC3986. This new class does > not support Serializable and is final and immutable. It can be > serialized in it's string form and reconstructed remotely by > passing a string to its constructor. It has identical method > signatures to java.net.URI. Originally java.net.URI was utilised, > however while it implements RFC2396 and RFC2732, it doesn't > strictly comply and allows additional characters that should be > escaped in RFC2396, this means that a strictly compliant RFC2396 > URI in normalized for may not be equal to a java.net.URI. In > addition java.net.URI didn't support escaped characters in host > names, which would prevent registered domains from some Locales > from being used in codebase strings. > 3. URL and URN are both URI, previously only URL's were legal, so the > expanded form also allows URN to be utilised legally as codebase > annotations, this includes Rio's maven artifact URN scheme. > 4. PreferredClassLoader no longer lazily loads the preferred list, > instead this is loaded during construction. >=20 > While these seem like huge semantic changes, the end result is codebase an= notations will still resolve to their correct ClassLoader as they always hav= e, but instead of using DNS to determine an IP addresses (in the case of htt= p and httpmd URL's), identity will be based on the RFC3986 normalized form o= f the codebase string. The ClassLoader will still use URL providers for res= olving codebases. For the real oddball case, where a developer expects thre= e separate domain codebase annotations to resolve to the same IP address and= use the same ClassLoader, that won't work anymore. >=20 > This won't be rushed out the door, plenty of time will be allowed for test= ing. >=20