Re: [Javaserver-perl] Problem at the end of my perl script
Brought to you by:
zzo
From: <ma...@zz...> - 2004-03-01 20:45:47
|
Put some print statements in Java.pm at the beginning of the DESTROY method (or run it thru the perl debugger) like: sub DESTROY { my($self) = shift; print "BYE: $self $self->{java} $self->{name}\n"; .... } & see what turns up. thanks, M On Mon, Mar 01, 2004 at 03:20:06PM -0500, Don Tam wrote: > Hi, > > I tried it with the modifications, to no avail. > Actually, there is one extra error before the two I listed earlier: > > (in cleanup) Can't call method "send_command_and_get_response" > on an und > efined value at /usr/lib/perl5/site_perl/5.8.0/Java.pm line 640, <GEN0> > line 181 > during global destruction. > > The difference being the GEN0 part. > > Here is my modified subroutine: > > sub buildClassesArrayList($$) { > my $hashRef = shift; > my $targetArrayList = shift; > > for my $package (keys %{$hashRef}) { > for my $class (keys %{$hashRef->{$package}}) { > my $fullyQualifiedClassName = $package.".".$class; > > $targetArrayList->add($java->create_object($fullyQualifiedClassName)->getClass()); > } > } > } > > ma...@zz... wrote: > > >Try this: > > > >@@ -57,8 +62,125 @@ sub buildClassesArrayList($$) { > > for my $package (keys %{$hashRef}) { > > for my $class (keys %{$hashRef->{$package}}) { > > my $fullyQualifiedClassName = $package.".".$class; > >- my $object = $java->create_object($fullyQualifiedClassName); > >- $targetArrayList->add($object->getClass()); > >+ > >$targetArrayList->add($java->create_object($fullyQualifiedClassName); > > } > > } > >} > > > >Basically get rid of that 'my $object' & just do the create straight into > >the arry list add... maybe that is confusing the destructor... > > M > > > >On Mon, Mar 01, 2004 at 02:44:29PM -0500, Don Tam wrote: > > > > > >>Hi Mark, > >> > >>Here it is: > >> > >>#!/usr/local/bin/perl -w > >> > >>use strict; > >>use Java; > >> > >>sub buildClassesArrayList($$); > >> > >>my $java = new Java(host=>'deathstar.consumercontact.com'); > >> > >>my %classes = ( > >> 'com.cc.tss' => { > >> 'TaskType' => 1, > >> 'Task' => 1, > >> 'PayRate' => 1, > >> 'Province' => 1, > >> 'PaySection' => 1, > >> 'PayType' => 1, > >> 'Location' => 1, > >> 'Department' => 1, > >> 'Title' => 1, > >> 'Employee' => 1 > >> }, > >> 'com.cc.tss.approver' => { > >> 'Role' => 1, > >> 'ApproverType' => 1, > >> 'ApproverLevel' => 1, > >> 'Approver' => 1 > >> } > >>); > >> > >>my $session; > >> > >> > >>eval { > >> $session = $java->static_call("com.cc.HibernateApplicationUtil", > >> "getSession"); > >>}; > >> > >>if ($@) { > >> $@ =~ s/^ERROR: //; > >> $@ =~ s/at $0.*$//; > >> > >> if ($@ =~ /NullPointerException/) { > >> my $arrayList = $java->create_object("java.util.ArrayList"); > >> buildClassesArrayList(\%classes, $arrayList); > >> my $path = `pwd`; > >> chomp ($path); > >> my $propertiesFileName = $path."/hibernate.properties"; > >> $java->static_call("com.cc.HibernateApplicationUtil", > >>"initConfiguration", $arrayList, $propertiesFileName); > >> } > >>} > >> > >>sub buildClassesArrayList($$) { > >> my $hashRef = shift; > >> my $targetArrayList = shift; > >> > >> for my $package (keys %{$hashRef}) { > >> for my $class (keys %{$hashRef->{$package}}) { > >> my $fullyQualifiedClassName = $package.".".$class; > >> my $object = $java->create_object($fullyQualifiedClassName); > >> $targetArrayList->add($object->getClass()); > >> } > >> } > >>} > >> > >>I will continue to look at it as well. > >> > >>Thanks, > >>Don. > >> > >>ma...@zz... wrote: > >> > >> > >> > >>>Seems the object is somehow already getting cleaned up before the > >>>global DESTROY gets called. > >>>If you know what object is causing the problem you can undef it. > >>>I will add a check to Java.pm for future releases too so this doesn't > >>>happen. > >>>If your script isn't too long I'll take a look at it - otherwise there > >>>seems to be a mis-matched between creating and destroying of your > >>>perl-created java objects. > >>> Mark > >>> > >>> > >>>On Mon, Mar 01, 2004 at 02:26:55PM -0500, Don Tam wrote: > >>> > >>> > >>> > >>> > >>>>Hi, > >>>> > >>>>Thanks for the reply. I am running the latest Java.pm.. I just > >>>>downloaded the 4.7 package on thursday (revision 1.3, it looks like). > >>>> > >>>>How would I avoid this? > >>>> > >>>>thanks, > >>>>Don. > >>>> > >>>>ma...@zz... wrote: > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>>Maybe a java object has already been destroy'ed before it went out > >>>>>of scope/the program ended. > >>>>>Java.pm tries to be smart & delete objects on the server-side when > >>>>>they > >>>>>go out of scope on the perl side. It's prolly not being smart enough. > >>>>>What version of Java.pm are you running? > >>>>>Mark > >>>>> > >>>>>On Mon, Mar 01, 2004 at 01:30:52PM -0500, Don Tam wrote: > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>>Hi, > >>>>>> > >>>>>>I keep getting this error, but the script seems to run fine: > >>>>>> > >>>>>>Use of uninitialized value in concatenation (.) or string at > >>>>>>/usr/lib/perl5/site > >>>>>>_perl/5.8.0/Java.pm line 640 during global destruction. > >>>>>> (in cleanup) Can't call method "send_command_and_get_response" > >>>>>>on an und > >>>>>>efined value at /usr/lib/perl5/site_perl/5.8.0/Java.pm line 640 > >>>>>>during global de > >>>>>>struction. > >>>>>> > >>>>>>Anyone know what's going on? > >>>>>> > >>>>>>Thanks, > >>>>>> > >>>>>>-- > >>>>>>Don Tam > >>>>>>Software Developer > >>>>>>(416)493-6111x177 > >>>>>>dt...@co... > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>------------------------------------------------------- > >>>>>>SF.Net is sponsored by: Speed Start Your Linux Apps Now. > >>>>>>Build and deploy apps & Web services for Linux with > >>>>>>a free DVD software kit from IBM. Click Now! > >>>>>>http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > >>>>>>_______________________________________________ > >>>>>>Javaserver-perl mailing list > >>>>>>Jav...@li... > >>>>>>https://lists.sourceforge.net/lists/listinfo/javaserver-perl > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>-- > >>>>Don Tam > >>>>Software Developer > >>>>(416)493-6111x177 > >>>>dt...@co... > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>-- > >>Don Tam > >>Software Developer > >>(416)493-6111x177 > >>dt...@co... > >> > >> > >> > >> > >> > >>------------------------------------------------------- > >>SF.Net is sponsored by: Speed Start Your Linux Apps Now. > >>Build and deploy apps & Web services for Linux with > >>a free DVD software kit from IBM. Click Now! > >>http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > >>_______________________________________________ > >>Javaserver-perl mailing list > >>Jav...@li... > >>https://lists.sourceforge.net/lists/listinfo/javaserver-perl > >> > >> > > -- > Don Tam > Software Developer > (416)493-6111x177 > dt...@co... > > > |