
Hi, my goal is to use slf4j and logback in our Glassfish servers. But I came a cross with an error in the groovy detection. Please see the stacktrace below. I think the problem has something to do with the classloader in glassfish. The libraries are placed in the root lib/endorsed folder. I need them there to have the highest priority while classloading. Is this a problem with my setup and idea, or do I encountered a real misbehavior. I attached a patch within this mail. Thanks in advance. Best Regards Karl Stacktrace and Log: Apr 05, 2013 11:47:05 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info INFO: JVM invocation command line: -XX:+UnlockDiagnosticVMOptions -XX:MaxPermSize=256m -XX:PermSize=64m -XX:NewRatio=2 -Xmx512m -client -javaagent:C:/glassfish3/glassfish/lib/monitor/flashlight-agent.jar -Dfelix.fileinstall.disableConfigSave=false -Djavax.net.ssl.keyStore=C:\glassfish3\glassfish\domains\domain1/config/keystore.jks -Djava.awt.headless=true -Dfelix.fileinstall.poll=5000 -Djava.endorsed.dirs=C:\glassfish3\glassfish/modules/endorsed;C:\glassfish3\glassfish/lib/endorsed -Dfelix.fileinstall.bundles.startTransient=true -Djavax.net.ssl.trustStore=C:\glassfish3\glassfish\domains\domain1/config/cacerts.jks -Djava.util.logging.config.file=C:\glassfish3\glassfish\domains\domain1/config/my_logging.properties -Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as -Djava.security.auth.login.config=C:\glassfish3\glassfish\domains\domain1/config/login.conf -DANTLR_USE_DIRECT_CLASS_LOADING=true -Dgosh.args=--nointeractive -Dosgi.shell.telnet.maxconn=1 -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver -Dfelix.fileinstall.dir=C:\glassfish3\glassfish/modules/autostart/ -Dosgi.shell.telnet.port=6666 -Djava.security.policy=C:\glassfish3\glassfish\domains\domain1/config/server.policy -Dfelix.fileinstall.log.level=2 -Dcom.sun.aas.instanceRoot=C:\glassfish3\glassfish\domains\domain1 -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory -Dosgi.shell.telnet.ip=127.0.0.1 -Dcom.sun.aas.installRoot=C:\glassfish3\glassfish -Djava.ext.dirs=c:\Program Files\Java\jdk1.7.0_15/lib/ext;c:\Program Files\Java\jdk1.7.0_15/jre/lib/ext;C:\glassfish3\glassfish\domains\domain1/lib/ext -Dfelix.fileinstall.bundles.new.start=true -Dlogback.configurationFile=C:\glassfish3\glassfish\domains\domain1/config/logback.xml Apr 05, 2013 11:47:05 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info INFO: Successfully launched in 9 msec. Launching GlassFish on Felix platform 11:47:05,393 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [C:\glassfish3\glassfish\domains\domain1/config/logback.xml] at [file:/C:/glassfish3/glassfish/domains/domain1/config/logback.xml] 11:47:05,455 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@1:29 - RuntimeException in Action for tag [configuration] java.lang.NullPointerException at java.lang.NullPointerException at at ch.qos.logback.classic.util.EnvUtil.isGroovyAvailable(EnvUtil.java:25) at at ch.qos.logback.classic.joran.action.ConfigurationAction.begin(ConfigurationAction.java:59) at at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) at at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) at at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56) at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75) at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) at at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:204) at at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:291) at at java.util.logging.Logger.log(Logger.java:565) at at java.util.logging.Logger.doLog(Logger.java:586) at at java.util.logging.Logger.logp(Logger.java:755) at at org.glassfish.embeddable.GlassFishRuntime.getRuntimeBuilder(GlassFishRuntime.java:181) at at org.glassfish.embeddable.GlassFishRuntime._bootstrap(GlassFishRuntime.java:156) at at org.glassfish.embeddable.GlassFishRuntime.bootstrap(GlassFishRuntime.java:110) at at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:112) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at at java.lang.reflect.Method.invoke(Method.java:601) at at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97) at at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:55) 11:47:05,457 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@399f9f8e - Registering current configuration as safe fallback point 11:47:05,459 |-WARN in Logger[org.glassfish.embeddable] - No appenders present in context [default] for logger [org.glassfish.embeddable]. Patched class: /** * Logback: the reliable, generic, fast and flexible logging framework. * Copyright (C) 1999-2011, QOS.ch. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation. */ package ch.qos.logback.classic.util; /** * @author Ceki Gücü */ public class EnvUtil { static public boolean isGroovyAvailable() { ClassLoader classLoader = EnvUtil.class.getClassLoader(); if(classLoader == null) { return false; } try { Class bindingClass = classLoader.loadClass("groovy.lang.Binding"); return (bindingClass != null); } catch (ClassNotFoundException e) { return false; } } } -- Karl Spies, Java Entwickler Tel.: +49 5207 9299-345 mailto: Karl.Spies@synaxon.de Jabber: Karl.Spies@jabber.synaxon.de SYNAXON AG Falkenstraße 31 33758 Schloß Holte-Stukenbrock Vorstand: Frank Roebers (Vorsitzender), Andreas Wenninger, Mark Schröder Aufsichtsratsvorsitzender: Dr. Günter Lewald Handelsregister Bielefeld HRB 36014