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...
|