Re: [Javaserver-perl] Problem at the end of my perl script
Brought to you by:
zzo
From: Don T. <dt...@co...> - 2004-03-01 21:22:01
|
Hi, I did as you suggested. It seems the null Pointer Exception is giving the GEN0 error, but I get undefs on $self and $self->java before I get the last two errors (the ones that show up even in my other scripts). Thanks, ma...@zz... wrote: >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... >> >> >> >> >> -- Don Tam Software Developer (416)493-6111x177 dt...@co... |