Vitali, can you remind me what your issue is?

On Wed, Mar 25, 2009 at 4:10 PM, Vitali Lovich <vlov...@gmail.com> wrote:

> This didn't fix my log4j issue, but there's a workaround:
>
> adding -Dlog4j.ignoreTCL to the VM arguments fixes it.
>
> On Wed, Mar 25, 2009 at 3:51 PM, Toby Reyelts <to...@google.com> wrote:
>
>> Overall, the change to treat server classes vs system classes separately,
>> such that system classes are "API classes" and server classes are
>> "implementation classes" looks good.
>>
>> I'm concerned that there will still be places where things will clash -
>> such as the sharing of log4j across both server and webapps. Given the
>> complexity of the situation, I understand the desire to change behavior as
>> little as possible in this area, though. There's also an argument that,
>> since this is the way Jetty currently functions, you're just exposing Jetty
>> behavior, as is.
>>
>> I think the situation would be simpler if GWT didn't treat the system
>> classpath as a "user-level" classpath.
>>
>>
>> On Wed, Mar 25, 2009 at 9:15 AM, <codesite-nore...@google.com> wrote:
>>
>>>
>>> Author: sco...@google.com
>>> Date: Wed Mar 25 05:43:19 2009
>>> New Revision: 5078
>>>
>>> Modified:
>>>
>>>
>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>
>>> Log:
>>> Amending r5077:
>>> - Catch ClassNotFound in outside loader and allow internal load
>>> - Allow "system" resources to be loaded internally if they're not found
>>> externally
>>> - jat suggestion to extract constant
>>> - Fix comments
>>>
>>> Review by: tobyr (TBR)
>>>
>>> Modified:
>>>
>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>
>>> ==============================================================================
>>> ---
>>>
>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>> (original)
>>> +++
>>>
>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>> Wed Mar 25 05:43:19 2009
>>> @@ -249,6 +249,8 @@
>>>       */
>>>      private class WebAppClassLoaderExtension extends WebAppClassLoader {
>>>
>>> +      private static final String META_INF_SERVICES =
>>> "META-INF/services/";
>>> +
>>>        public WebAppClassLoaderExtension() throws IOException {
>>>          super(bootStrapOnlyClassLoader, WebAppContextWithReload.this);
>>>        }
>>> @@ -257,17 +259,21 @@
>>>        public URL findResource(String name) {
>>>          // Specifically for
>>> META-INF/services/javax.xml.parsers.SAXParserFactory
>>>          String checkName = name;
>>> -        if (checkName.startsWith("META-INF/services/")) {
>>> -          checkName =
>>> checkName.substring("META-INF/services/".length());
>>> +        if (checkName.startsWith(META_INF_SERVICES)) {
>>> +          checkName = checkName.substring(META_INF_SERVICES.length());
>>>          }
>>>
>>> -        // For system/server path, just try the outside world quietly.
>>> +        // For a system path, load from the outside world.
>>> +        URL found;
>>>          if (isSystemPath(checkName)) {
>>> -          return systemClassLoader.getResource(name);
>>> +          found = systemClassLoader.getResource(name);
>>> +          if (found != null) {
>>> +            return found;
>>> +          }
>>>          }
>>>
>>>          // Always check this ClassLoader first.
>>> -        URL found = super.findResource(name);
>>> +        found = super.findResource(name);
>>>          if (found != null) {
>>>            return found;
>>>          }
>>> @@ -303,14 +309,18 @@
>>>
>>>        @Override
>>>        protected Class<?> findClass(String name) throws
>>> ClassNotFoundException {
>>> -        // For system/server path, just try the outside world quietly.
>>> +        // For system path, always prefer the outside world.
>>>          if (isSystemPath(name)) {
>>> -          return systemClassLoader.loadClass(name);
>>> +          try {
>>> +            return systemClassLoader.loadClass(name);
>>> +          } catch (ClassNotFoundException e) {
>>> +          }
>>>          }
>>>
>>>          try {
>>>            return super.findClass(name);
>>>          } catch (ClassNotFoundException e) {
>>> +          // Don't allow server classes to be loaded from the outside.
>>>            if (isServerPath(name)) {
>>>              throw e;
>>>            }
>>>
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to