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