axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacob Kjome <h...@visi.com>
Subject RE: ClassNotFoundException when using my own logger
Date Fri, 05 Mar 2004 02:03:06 GMT
At 04:03 PM 3/4/2004 -0700, you wrote:
>I put all the Log classes in WEB-INF/classes and I also have my jar in 
>WEB-INF/lib and I also tried to put this jar in $CATALINA_HOME/common/lib. 
>I am still getting the same error.
>
>Has anybody gotten their own logger classes which use java.util.logging to 
>work with Axis?

It's pretty obvious that 
java.util.logging.LogManager.initializeGlobalHandlers() is doing some nasty 
stuff.  It seems it is trying to  load 
org.waterford.util.logging.wLogFileHandler by reflection ( 
ClassLoader.loadClass() ).  Well, that actually isn't the bad part.  The 
bad part is that they didn't think to use the thread context class loader 
to load it.  As such, you will have to put your 
org.waterford.util.logging.* package in a classloader that the JDK can 
see.  The way Java2 classloading works, child classloaders can see parents, 
but not vice-versa.  You can try JAVA_HOME/jre/lib/ext or you can see if 
putting it in CATALINA_HOME/common/endorsed works.  You'll have to send the 
JDK logging developers a nasty gram asking why they didn't do...

Class.forName(globalHanderClassName, true, 
Thread.currentThread().getContextClassLoader());

What they did was probably this...

Class.forName(globalHandlerClassName);


That's such a silly mistake.  When you get sick of trying to deal with JDK 
logging, go ahead and try Log4j.  I think you'll have more success and have 
more powerful and flexible logging to boot.


Jake


>
>Thanks.
>
>Oleg
>-----Original Message-----
>From: Nicholas Remy [mailto:nremy@caci.com]
>Sent: Thursday, March 04, 2004 10:36 AM
>To: axis-user@ws.apache.org
>Subject: Re: ClassNotFoundException when using my own logger
>
>
>Is your org.waterford.util.logging.wLog class a member of a package?  If 
>so, remember that you have to place the .class file in an 
>appropriately-named folder UNDER WEB-INF/classes.
>
>Just a thought.
>
>
>Nicholas Remy
>
>
>
>
>
>"Oleg Lebedev" <oleglebedev@waterford.org>
>
>03/03/2004 03:01 PM
>Please respond to
>axis-user@ws.apache.org
>
>To
><axis-user@ws.apache.org>
>cc
>Subject
>ClassNotFoundException when using my own logger
>
>
>
>
>
>Hi all.
>
>I have created and successfully deployed a web service using Axis. Now I 
>am trying to print out my messages through my own Log class, which extends 
>my other org.waterford.util.logging.wLog class, which is a wrapper for 
>java.util.logging.Log class.
>
>Axis finds the Log and wLog classes, but when 
>java.util.logging.LogManager.initializeGlobalHandlers() chokes trying to 
>load org.waterford.util.logging.wLogFileHandler (see the stack trace below).
>
>I tried putting all my org.waterford.util.logging.* classes in 
>WEB-INF/classes, but I get the same error.
>
>So, objviously Axis ClassLoader sees my classes, but jdk ClassLoader doesn't.
>How can I fix this problem?
>
>Thanks.
>
>Oleg
>
>STACK TRACE:
>
>logging to the file
>Can't load log handler "org.waterford.util.logging.wLogFileHandler"
>java.lang.ClassNotFoundException: org.waterford.util.logging.wLogFileHandler
>java.lang.ClassNotFoundException: org.waterford.util.logging.wLogFileHandler
>at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
>at java.security.AccessController.doPrivileged(Native Method)
>at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
>at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
>at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
>at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
>at java.util.logging.LogManager$3.run(LogManager.java:717)
>at java.security.AccessController.doPrivileged(Native Method)
>
>at java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:710)
>at java.util.logging.LogManager.access$800(LogManager.java:114)
>at java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:817)
>at java.util.logging.Logger.log(Logger.java:420)
>at java.util.logging.Logger.doLog(Logger.java:446)
>at java.util.logging.Logger.logp(Logger.java:562)
>at org.apache.commons.logging.impl.Jdk14Logger.log(Jdk14Logger.java:126)
>at org.apache.commons.logging.impl.Jdk14Logger.debug(Jdk14Logger.java:137)
>at 
>org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1264)
>at 
>org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1230)
>at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
>
>at org.waterford.util.logging.wLogRecord.inferCaller(wLogRecord.java:164)
>at 
>org.waterford.util.logging.wLogRecord.getSourceClassName(wLogRecord.java:67)
>at org.waterford.util.logging.wLog.message(wLog.java:167)
>  at 
> org.waterford.sequencer.business.ObjectiveFactory.findBranchesByProductId(ObjectiveFactory.java:138)
>at 
>org.waterford.sequencer.engine.WSSequencerImpl.findBranchesByProductId(WSSequencerImpl.java:47)
>at 
>org.waterford.sequencer.interfaces.ws.SequencerSoapBindingImpl.findBranchesByProductId(SequencerSoapBindingImpl.java:28)

>
>
>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>at 
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>at 
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>at java.lang.reflect.Method.invoke(Method.java:324)
>at 
>org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:402)
>at 
>org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:309)
>at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:333)
>at 
>org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
>at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
>at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
>at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:481)
>at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323)
>at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:854)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
>at 
>org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:339)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>at 
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
>at 
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
>at 
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
>at 
>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
>at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
>at 
>org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
>at 
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
>at 
>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
>at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
>at 
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
>at 
>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
>at 
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
>at 
>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
>at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
>at 
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
>at 
>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
>at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
>at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
>at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
>at 
>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
>at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
>at 
>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
>at java.lang.Thread.run(Thread.java:536)
>
>Oleg Lebedev
>Software Engineer
>Waterford Institute
>Phone: 801.938.1724
>Cell: 801.209.6706
>
>
>*************************************
>This e-mail may contain privileged or confidential material intended for 
>the named recipient only.
>If you are not the named recipient, delete this message and all attachments.
>Unauthorized reviewing, copying, printing, disclosing, or otherwise using 
>information in this e-mail is prohibited.
>We reserve the right to monitor e-mail sent through our network.
>*************************************
>
>
>*************************************
>This e-mail may contain privileged or confidential material intended for 
>the named recipient only.
>If you are not the named recipient, delete this message and all attachments.
>Unauthorized reviewing, copying, printing, disclosing, or otherwise using 
>information in this e-mail is prohibited.
>We reserve the right to monitor e-mail sent through our network.
>*************************************


Mime
View raw message