Solved. If you need to use slf4j in your server classes, you must "promote" slf4j classes to system classes. You do that by configuring the WebAppContext just like this:
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> <Set name="systemClasses"> <Array type="java.lang.String"> <!-- we copied these paths from jetty WebAppContext source code ... --> <Item>java.</Item> <Item>javax.servlet.</Item> <Item>javax.xml.</Item> <Item>org.mortbay.</Item> <Item>org.xml.</Item> <Item>org.w3c.</Item> <Item>org.apache.commons.logging.</Item> <Item>org.apache.log4j.</Item> <!-- and ... added slf4j --> <Item>org.slf4j.</Item> <!-- we must promote slf4j to system classes, otherwise gwt hosted mode will not allow loading them due to a policy that don't allow server classes to be loaded from the outside world (see gwt JettyLauncher source code). --> </Array> </Set> </Configure> You should put this file at /war/WEB-INF/jetty-web.xml. For more information, see http://docs.codehaus.org/display/JETTY/jetty-web.xml Cheers, Célio On Apr 13, 11:34 am, Célio <ccidral....@gmail.com> wrote: > I have just migrated our gwt app from 1.5 to 1.6. Everything is fine > except that slf4j classes can't be loaded on hosted mode. We actually > use slf4j in our web app to log our own stuff. The problem is that > the hosted mode class loader don't allow server classes to be loaded > from the outside world. It checks the class name against a list of > server classes that jetty hard-codes somewhere, and that list contains > the org.slf4f package. > > WebAppClassLoaderExtension.findClass(String name) { > @Override > protected Class<?> findClass(String name) throws > ClassNotFoundException { > ... > // Don't allow server classes to be loaded from the outside. > if (isServerPath(name)) { > throw e; > } > ... > } > > } > > isServerPath is defined by the subclass: > > public class WebAppClassLoader > { > public boolean isServerPath(String name) > { > ... > String[] server_classes = _context.getServerClasses(); > // if the name is in the list, return true (basically). > > } > > Where _context is a: > > public class WebAppContext extends Context > { > ... > private String[] _serverClasses = {"- > org.mortbay.jetty.plus.jaas.", "org.mortbay.jetty.", "org.slf4j."}; > // TODO > hide all mortbay classes > ... > public String[] getServerClasses() > { > return _serverClasses; > } > > } > > Does anybody know how to workaround this issue? > > Cheers, > > Célio --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---