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:[EMAIL PROTECTED]
Sent: Thursday, March 04, 2004 10:36 AM
To: [EMAIL PROTECTED]
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" <[EMAIL PROTECTED]>

03/03/2004 03:01 PM
Please respond to
[EMAIL PROTECTED]

To
<[EMAIL PROTECTED]>
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.
*************************************



Reply via email to