Re: [Javaserver-perl] Problem at the end of my perl script
Brought to you by:
zzo
From: Don T. <dt...@co...> - 2004-03-01 20:32:29
|
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... |