From: | thomas at tada(dot)se (Thomas Hallgren) |
---|---|
To: | |
Subject: | [Pljava-dev] Cannot find dynamic class |
Date: | 2006-03-25 20:15:40 |
Message-ID: | 4425A4EC.6000101@tada.se |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pljava-dev |
Hi Darren,
Now I see what's going on. You're using an old version of PL/Java that
had issues when classes where loaded using threads different from the
main thread. The backend doesn't understand the concept of threads at
all so it assumes that a stack overflow has occurred when the thread
(and thus the stack) has changed.
Please upgrade to PL/Java 1.2.0.
Regards,
Thomas Hallgren
Darren Govoni wrote:
> Hi Thomas,
> Thanks for responding. :) Here is my stack trace.
>
> INFO: 24 Mar 06 23:06:59 org.postgresql.pljava.sqlj.Loader Failed to
> load class
> org.postgresql.pljava.internal.ServerException: stack depth
> limit exceeded
> at
> org.postgresql.pljava.internal.ExecutionPlan._cursorOpen(Native Method)
> at
> org.postgresql.pljava.internal.ExecutionPlan.cursorOpen(ExecutionPlan.java:136)
>
> at
> org.postgresql.pljava.jdbc.SPIStatement.executePlan(SPIStatement.java:114)
>
> at
> org.postgresql.pljava.jdbc.SPIPreparedStatement.execute(SPIPreparedStatement.java:263)
>
> at
> org.postgresql.pljava.jdbc.SPIPreparedStatement.executeQuery(SPIPreparedStatement.java:72)
>
> at
> org.postgresql.pljava.sqlj.Loader.findClass(Loader.java:171)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
> at
> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
> at
> com.echomine.net.SocketConnector$1.run(SocketConnector.java:285)
> at java.lang.Thread.run(Thread.java:534)
>
> java.lang.NoClassDefFoundError: alt/java/net/SocketImpl
> at
> com.echomine.net.SocketConnector$1.run(SocketConnector.java:285)
> at java.lang.Thread.run(Thread.java:534)
>
> ----------
>
>
> Here is the code generating it.
>
> Class: SocketConnector.java
>
> ....
> import alt.java.net.SocketImpl;
> .....
>
> public void aconnect(final SocketHandler socketHandler, final
> ConnectionModel connectionModel) {
> Thread thread = new Thread(new Runnable() {
> public void run() {
> alt.java.net.Socket socket = null;
> try {
> ConnectionEvent event = new
> ConnectionEvent(connectionModel, ConnectionEvent.CONNECTION_STARTING
> );
> ConnectionEvent vetoEvent = new
> ConnectionEvent(connectionModel, ConnectionEvent.CONNECTION_VETO
> ED);
> fireConnectionStarting(event, vetoEvent);
> socketHandler.start();
> if (connectionModel.isSSL()) {
> socket = new
> SocketImpl(negotiateSSLConnection(connectionModel));
> } else {
> --->>> socket = new SocketImpl(new
> Socket(connectionModel.getHost(), connectionModel.getPort()));
> }
>
>
> It appears the class in question is indeed in the jar I load.
>
> Thank you!!!
>
> Darren
>
>
> Thomas Hallgren wrote:
>> Hi Darren,
>> What do you mean when you say 'dynamically loaded'? Do you load it
>> using an explicit ClassLoader.loadClass() call? And that succeeds?
>> Also, when you say 'statically initializes', you you mean that the
>> class in question has a static attribute of class SocketImpl, does it
>> extend that class, or does it use an explicit ClassLoader inside of a
>> static initializer?
>>
>> Is it a ClassNotFoundException or a NoClassDefFoundError that you are
>> experiencing? Can you provide a stack trace?
>>
>> Regards,
>> Thomas Hallgren
>>
>>
>> Darren Govoni wrote:
>>> Hi,
>>>
>>> Running pljava 1.1 with postgres 8.0.3.
>>>
>>> I have a single jar that contains all my classes. One class
>>> 'SocketImpl', is dynamically loaded, however
>>> pljava throws a class not found exception when I try to execute a
>>> function on a class that statically initializes
>>> with 'SocketImpl'. Any tips very appreciated!
>>>
>>> Cheers,
>>> Darren
>>> _______________________________________________
>>> Pljava-dev mailing list
>>> Pljava-dev at gborg.postgresql.org
>>> http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>>>
>>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Hallgren | 2006-03-25 20:17:21 | [Pljava-dev] Cannot find dynamic class |
Previous Message | Darren Govoni | 2006-03-25 17:22:14 | [Pljava-dev] Cannot find dynamic class |