Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Possible bug in Weblogic server - class cast exception with http tunelling

6 views
Skip to first unread message

Leonid Portnoy

unread,
May 23, 2001, 12:09:07 AM5/23/01
to

Hi,

I have an RMI server that creates several threads to callback
(via RMI also) its clients, upon some events.

I'm using HTTP tunneling over T3. Everything was working fine with Weblogic
5.1, but when I installed Weblogic 6.0 it
now gives a ClassCast exception.

The problem occurs in several places but it seems to be due to one common
thing : The Weblogic server is trying to cast the current thread to ExecuteThread
and calls getDate on it[something like ((ExecuteThread)Thread.currentThread()).getDate()].
It attempts to do this when it logs http activity to http-access log file, and
when it writes out headers for http over T3 data.

Apparently it makes the assumption that anything writing out headers or writing
to the log will be done by the ExecuteThread. I guess this would be the usual
scenario when handling RMI requests coming in from the client, since that would
be done by an ExecuteThread. But since I create my own threads, that also need
to make RMI calls using http over t3, they can not be cast to ExecuteThread.

This looks like a possible bug in Weblogic server, because there really is
no reason to force all threads making RMI calls (that could happen to be using
http over t3) to be ExecuteThreads.

The error that I'm getting due to logging to http access file looks as follows
:

java.lang.ClassCastException: java.lang.Thread->Thread[Thread-6,5,CallBackThread]java.lang.ClassCastException:
java.lang.Thread

at weblogic.servlet.internal.HttpServer.logToFile HttpServer.java:1000)

at weblogic.servlet.internal.HttpServer.log(HttpServer.java:944)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:843)

at weblogic.rjvm.http.HTTPServerJVMConnection.sendMsg(HTTPServerJVMConnection.java:361)

at weblogic.rjvm.MsgAbbrevJVMConnection.sendOutMsg(MsgAbbrevJVMConnection.java:367)

at weblogic.rjvm.MsgAbbrevJVMConnection.sendMsg(MsgAbbrevJVMConnection.java:173)

at weblogic.rjvm.ConnectionManager.sendMsg(ConnectionManager.java:482)

at weblogic.rjvm.RJVMImpl.send(RJVMImpl.java:419)
at weblogic.rjvm.MsgAbbrevOutputStream.flushAndSendRaw(MsgAbbrevOutputStream.java:114)

at weblogic.rjvm.MsgAbbrevOutputStream.flushAndSend(MsgAbbrevOutputStream.java:122)

at weblogic.rjvm.MsgAbbrevOutputStream.sendRecv(MsgAbbrevOutputStream.java:144)

at weblogic.rmi.internal.AbstractOutboundRequest.sendReceive(AbstractOutboundRequest.java:84)

at com.crosslinks.rt2.servlet.PushClient_WLStub.setNextMessage(PushClient_WLStub.java:97)

at com.crosslinks.rt2.servlet.CallableWrapper.call(CallableWrapper.java:
74)
at com.crosslinks.rt2.servlet.threadpool.CallBackThread.run(CallBackThread.java:75)

at java.lang.Thread.run(Thread.java:484)

When I turn http-access logging off, the error due to writing headers and
getting date for them appears and it looks like this :


java.lang.ClassCastException: java.lang.Thread->Thread[Thread-4,5,CallBackThread]
java.lang.ClassCastException: java.lang.Thread

at weblogic.servlet.internal.ResponseHeaders.setDateHeader(ResponseHeaders.java:273)

at weblogic.servlet.internal.ServletResponseImpl.setDateHeader(ServletResponseImpl.java:476)
at weblogic.servlet.internal.ServletResponseImpl.writeHeaders(ServletResponseImpl.java:664)
at weblogic.servlet.internal.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:126)
at weblogic.servlet.internal.ServletOutputStreamImpl.finish(ServletOutputStreamImpl.java:445)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:830)
at weblogic.rjvm.http.HTTPServerJVMConnection.sendMsg(HTTPServerJVMConnection.java:361)
at weblogic.rjvm.MsgAbbrevJVMConnection.sendOutMsg(MsgAbbrevJVMConnection.java:367)
at weblogic.rjvm.MsgAbbrevJVMConnection.sendMsg(MsgAbbrevJVMConnection.java:173)
at weblogic.rjvm.ConnectionManager.sendMsg(ConnectionManager.java:482)
at weblogic.rjvm.RJVMImpl.send(RJVMImpl.java:419)
at weblogic.rjvm.MsgAbbrevOutputStream.flushAndSendRaw(MsgAbbrevOutputStream.java:114)
at weblogic.rjvm.MsgAbbrevOutputStream.flushAndSend(MsgAbbrevOutputStream.java:122)
at weblogic.rjvm.MsgAbbrevOutputStream.sendRecv(MsgAbbrevOutputStream.java:144)
at weblogic.rmi.internal.AbstractOutboundRequest.sendReceive(AbstractOutboundRequest.java:84)
at com.crosslinks.rt2.servlet.PushClient_WLStub.setNextMessage(PushClient_WLStub.java:97)
at com.crosslinks.rt2.servlet.CallableWrapper.call(CallableWrapper.java:74)
at com.crosslinks.rt2.servlet.threadpool.CallBackThread.run(CallBackThread.java:75)
at java.lang.Thread.run(Thread.java:484)

What can be done about this, and is this really a bug?

Thanks,
Leonid Portnoy

0 new messages