agora inbox for pljava-dev@postgresql.org
help / color / mirror / Atom feedSubject: [Pljava-dev] Cannot find dynamic class
Date: Sat, 25 Mar 2006 21:15:40 +0100
Message-ID: <4425A4EC.6000101@tada.se> (raw)
In-Reply-To: <44257C46.6070701@metadapt.com>
References: <4424C5C3.4000500@metadapt.com>
<4424F664.7060105@tada.se>
<44257C46.6070701@metadapt.com>
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
>>>
>>
>
view thread (5+ messages) latest in thread
Message-ID: <4425A4EC.6000101@tada.se>
Permalink: ../4425A4EC.6000101@tada.se/
Also on: postgresql.org/message-id/4425A4EC.6000101@tada.se
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pljava-dev@postgresql.org
Subject: Re: [Pljava-dev] Cannot find dynamic class
In-Reply-To: <4425A4EC.6000101@tada.se>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox