About 2, 3 weeks ago I wrote some 'proof of concept' mod_perl to bind some
of my java based bond calculation routines into mod_perl using Inline::Java.

They worked like a champ; I have it setup with all the neccessary mod_perl
items and it had a handler, setup as following:

Inline::Java declared as :
class MuniCalculator

handler loads a simply calculation worksheet.

Calculations done from within handler by calling another sub in same
package.


These work great - they do the job just fine.

However, I started last nite with abstracting my Calc routines to be called
from other modules.  I started hanging on "new
Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator();" (call to
create the new object).  I went back and ran the default handler, etc for
the 'test worksheet' I had setup 2 weeks ago in the main calculator and it
worked fine.

I tried setting up a calculate routine WITHIN the module that needed to do
calculations.  Same bug as above.

And furthermore, I basically found that if I altered the
Inline::Java/mod_perl marriage I had created several weeks ago AT ALL, the
error occurred.  It is rather frustrating.

The Inline Debug output at time of error is:
perl 11851: portable: EXE_EXTENSION for linux is default ''
perl 11851: portable: EXE_EXTENSION for linux is default ''
perl: $VAR1 = [
          '/usr/local/java/bin'
        ];
perl 11851: path element: /usr/local/java/bin
perl 11851:   candidate: /usr/local/java/bin/java
perl 11851:   found file java in /usr/local/java/bin
perl 11851:   candidate: /usr/local/java/bin/javac
perl 11851:   found file javac in /usr/local/java/bin
perl 11851: validate done.
perl 11851: portable: SUB_FIX_CLASSPATH =>
/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/MarkupMatrix/Ord
erTicket_46ae for linux is default
'/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/MarkupMatrix/Or
derTicket_46ae'
perl 11851: portable: ENV_VAR_PATH_SEP_CP for linux is default ':'
perl 11851:   classpath:
/usr/local/tmc/j2ee.jar:/usr/local/oracle/816/jdbc/lib/classes12.zip:/usr/lo
cal/tmc/MuniCenter/jars/MuniCenter.jar:/usr/local/tmc/MuniCenter/packages/ti
ps/tips.jar:/usr/local/tmc/MuniCenter/properties:/usr/local/tmc/MuniCenter/p
roperties:/usr/local/tmc/MuniCenter/packages/xerces.jar://usr/local/tmc/Muni
Center/packages/aelfred.jar://usr/local/tmc/MuniCenter/packages/sax.jar:/usr
/local/tmc/MuniCenter/packages/javamail/mail.jar:/usr/local/tmc/bea/weblogic
/lib/weblogic_sp.jar:/usr/local/tmc/bea/weblogic/lib/weblogic.jar:/usr/local
/tmc/MuniCenter/packages/softwired/mbus-4-1-1/lib/iBusJMS.jar:/usr/local/tmc
/MuniCenter/packages/softwired/mbus-4-1-1/lib/iBusJMSRT.jar:/usr/local/tmc/M
uniCenter/packages/softwired/mbus-4-1-1/lib/jndi.jar:/usr/local/tmc/MuniCent
er/packages/softwired/mbus-4-1-1/lib:/usr/local/tmc/softwired/msrv411busines
s/server/lib:/usr/local/tmc/MuniCenter/packages/softwired/admin411API.jar:/u
sr/local/oracle/816/jdbc/lib/classes12.zip:/usr/local/tmc/MuniCenter/package
s/junit.jar:/usr/local/tmc/MuniCenter/packages/Tidy.jar:/usr/local/tmc/MuniC
enter/packages/:/usr/local/tmc/MuniCenter/packages/JavaScript.jar:/usr/local
/tmc/MuniCenter/packages/httpunit.jar:/usr/local/tmc/MuniCenter/jars/MuniCen
ter.jar:/usr/local/tmc/MuniCenter/jars/B2BAppServer.jar:/usr/local/tmc/MuniC
enter/packages/tips/tips.jar:/usr/local/tmc/MuniCenter/packages/kcServlet2.j
ar:.:/usr/local/tmc/MuniCenter/packages/tibco/lib/tibrvj.jar:/usr/local/tmc/
MuniCenter/packages/mqm/java/lib/mq.jar:/usr/local/tmc/MuniCenter/packages/m
qm/java/lib/com.ibm.mqbind.jar:/usr/local/tmc/MuniCenter/packages/test/jaxp.
jar:/usr/local/tmc/MuniCenter/packages/test/xalan.jar:/usr/local/tmc/MuniCen
ter/packages/test/crimson.jar:/usr/local/tmc/MuniCenter/packages/test/tibrvj
web.jar:/usr/local/tmc/MuniCenter:/usr/local/tmc/MuniCenter/packages/FTPProt
ocol.jar:/usr/local/tmc/MuniCenter/packages/jsse/jsse.jar:/usr/local/tmc/Mun
iCenter/packages/jsse/jcert.jar:/usr/local/tmc/MuniCenter/packages/jsse/jnet
..jar:/usr/local/tmc/softwired/msrv411business/server/lib/gnu-regexp-1.0.8.ja
r:/usr/local/tmc/MuniCenter/packages/sybase/jconn.jar:/usr/local/tmc/MuniCen
ter/packages/sybase/jconn2.jar:/usr/local/tmc/MuniCenter/packages/muniblow/m
uniBlow.jar:/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/Mark
upMatrix/OrderTicket_46ae:.
perl 11851: Starting JVM...
perl 11851:   Client/Server mode
perl 11851: portable: GOT_ALARM for linux is default 'define'
perl 11851: portable: EXE_EXTENSION for linux is default ''
perl 11851: "/usr/local/java/bin/java" InlineJavaServer true 7890 true
perl 11851: portable: DEV_NULL for linux is default '/dev/null'
perl 11851: portable: GOT_ALARM for linux is default 'define'
perl 11851: getting server type
perl 11851:   packet sent is server_type
java:   packet recv is server_type
java:   class java.lang.String is primitive string
java:   packet sent is ok scalar:115.104.97.114.101.100
perl 11851:   packet recv is ok scalar:115.104.97.114.101.100
perl 11851: Destroying Inline::Java::Protocol
perl 11851:   Perl doesn't know about 'MuniCalculator'
perl 11851: using jdat cache
perl 11851: Object created in java
(Apache::MuniCenter::MarkupMatrix::OrderTicket::MuniCalculator):
perl: $VAR1 = bless( {},
'Apache::MuniCenter::MarkupMatrix::OrderTicket::MuniCalculator' );
perl: $VAR1 = bless( {
                 'module' => 'OrderTicket_46ae',
                 'java_class' => 'MuniCalculator',
                 'class' =>
'Apache::MuniCenter::MarkupMatrix::OrderTicket::MuniCalculator',
                 'id' => 0,
                 'proto' => bless( {
                                     'module' => 'OrderTicket_46ae',
                                     'obj_priv' => $VAR1
                                   }, 'Inline::Java::Protocol' )
               }, 'Inline::Java::Object::Private' );
java:   packet recv is null
java:   Lost connection with client in shared JVM mode.
perl 11851: portable: GOT_ALARM for linux is default 'define'
[Fri May  3 12:19:00 2002] null: About to enter calculator code...
[Fri May  3 12:19:00 2002] null: trying to create a calculator
[Fri May  3 12:19:00 2002] null: Creating a NEW calculator object at
/usr/local/tmc/mod_tmc_2/sales_markup_matrixd/lib/mod_perl/Apache/MuniCenter
/MarkupMatrix/OrderTicket.pm line 354, <_GEN_2> chunk 1.
perl 11851: Matching arguments to new()
perl: $VAR1 = [];
perl: $VAR1 = [];
perl 11851: Match successful: score is 0
perl 11851: Perfect match found, aborting search
perl 11851: creating object new MuniCalculator()
perl 11851:   packet sent is create_object MuniCalculator ()
java:   packet recv is create_object MuniCalculator ()
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a MuniCalculator constructor
java: () = ()?
java:   has matching signature ()
java:   packet sent is ok object:0:1:MuniCalculator

..... it just hangs there.  Forever.  No output past that.  It seems like the
inline server  Ostensibly, Java seems to be returning the object...perl just
never picks it up and keeps going.

On the contrary, in the module that DOES work, the output is along these
lines:

perl 11853: portable: EXE_EXTENSION for linux is default ''
perl 11853: portable: EXE_EXTENSION for linux is default ''
perl: $VAR1 = [
          '/usr/local/java/bin'
        ];
perl 11853: path element: /usr/local/java/bin
perl 11853:   candidate: /usr/local/java/bin/java
perl 11853:   found file java in /usr/local/java/bin
perl 11853:   candidate: /usr/local/java/bin/javac
perl 11853:   found file javac in /usr/local/java/bin
perl 11853: validate done.
perl 11853: portable: SUB_FIX_CLASSPATH =>
/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/Util/Calc/MCCalc
ulator for linux is default
'/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/Util/Calc/MCCal
culator'
perl 11853: portable: ENV_VAR_PATH_SEP_CP for linux is default ':'
perl 11853:   classpath:
/usr/local/tmc/j2ee.jar:/usr/local/oracle/816/jdbc/lib/classes12.zip:/usr/lo
cal/tmc/MuniCenter/jars/MuniCenter.jar:/usr/local/tmc/MuniCenter/packages/ti
ps/tips.jar:/usr/local/tmc/MuniCenter/properties:/usr/local/tmc/MuniCenter/p
roperties:/usr/local/tmc/MuniCenter/packages/xerces.jar://usr/local/tmc/Muni
Center/packages/aelfred.jar://usr/local/tmc/MuniCenter/packages/sax.jar:/usr
/local/tmc/MuniCenter/packages/javamail/mail.jar:/usr/local/tmc/bea/weblogic
/lib/weblogic_sp.jar:/usr/local/tmc/bea/weblogic/lib/weblogic.jar:/usr/local
/tmc/MuniCenter/packages/softwired/mbus-4-1-1/lib/iBusJMS.jar:/usr/local/tmc
/MuniCenter/packages/softwired/mbus-4-1-1/lib/iBusJMSRT.jar:/usr/local/tmc/M
uniCenter/packages/softwired/mbus-4-1-1/lib/jndi.jar:/usr/local/tmc/MuniCent
er/packages/softwired/mbus-4-1-1/lib:/usr/local/tmc/softwired/msrv411busines
s/server/lib:/usr/local/tmc/MuniCenter/packages/softwired/admin411API.jar:/u
sr/local/oracle/816/jdbc/lib/classes12.zip:/usr/local/tmc/MuniCenter/package
s/junit.jar:/usr/local/tmc/MuniCenter/packages/Tidy.jar:/usr/local/tmc/MuniC
enter/packages/:/usr/local/tmc/MuniCenter/packages/JavaScript.jar:/usr/local
/tmc/MuniCenter/packages/httpunit.jar:/usr/local/tmc/MuniCenter/jars/MuniCen
ter.jar:/usr/local/tmc/MuniCenter/jars/B2BAppServer.jar:/usr/local/tmc/MuniC
enter/packages/tips/tips.jar:/usr/local/tmc/MuniCenter/packages/kcServlet2.j
ar:.:/usr/local/tmc/MuniCenter/packages/tibco/lib/tibrvj.jar:/usr/local/tmc/
MuniCenter/packages/mqm/java/lib/mq.jar:/usr/local/tmc/MuniCenter/packages/m
qm/java/lib/com.ibm.mqbind.jar:/usr/local/tmc/MuniCenter/packages/test/jaxp.
jar:/usr/local/tmc/MuniCenter/packages/test/xalan.jar:/usr/local/tmc/MuniCen
ter/packages/test/crimson.jar:/usr/local/tmc/MuniCenter/packages/test/tibrvj
web.jar:/usr/local/tmc/MuniCenter:/usr/local/tmc/MuniCenter/packages/FTPProt
ocol.jar:/usr/local/tmc/MuniCenter/packages/jsse/jsse.jar:/usr/local/tmc/Mun
iCenter/packages/jsse/jcert.jar:/usr/local/tmc/MuniCenter/packages/jsse/jnet
..jar:/usr/local/tmc/softwired/msrv411business/server/lib/gnu-regexp-1.0.8.ja
r:/usr/local/tmc/MuniCenter/packages/sybase/jconn.jar:/usr/local/tmc/MuniCen
ter/packages/sybase/jconn2.jar:/usr/local/tmc/MuniCenter/packages/muniblow/m
uniBlow.jar:/usr/local/tmc/mod_tmc_2/.Inline/lib/auto/Apache/MuniCenter/Util
/Calc/MCCalculator:.
perl 11853: Starting JVM...
perl 11853:   Client/Server mode
perl 11853: portable: GOT_ALARM for linux is default 'define'
perl 11853:   Connected to already running JVM!
perl 11853: getting server type
perl 11853:   packet sent is server_type
java:   packet recv is server_type
java:   class java.lang.String is primitive string
java:   packet sent is ok scalar:115.104.97.114.101.100
perl 11853:   packet recv is ok scalar:115.104.97.114.101.100
perl 11853: Destroying Inline::Java::Protocol
perl 11853:   Perl doesn't know about 'MuniCalculator'
perl 11853: using jdat cache
perl 11853: Object created in java
(Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator):
perl: $VAR1 = bless( {},
'Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator' );
perl: $VAR1 = bless( {
                 'module' => 'MCCalculator',
                 'java_class' => 'MuniCalculator',
                 'class' =>
'Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator',
                 'id' => 0,
                 'proto' => bless( {
                                     'module' => 'MCCalculator',
                                     'obj_priv' => $VAR1
                                   }, 'Inline::Java::Protocol' )
               }, 'Inline::Java::Object::Private' );
java:   packet recv is null
java:   Lost connection with client in shared JVM mode.
perl 11853: portable: GOT_ALARM for linux is default 'define'
[Fri May  3 12:20:27 2002] null: About to enter calculator code...
[Fri May  3 12:20:27 2002] null: trying to create a calculator
[Fri May  3 12:20:27 2002] null: Creating a NEW calculator object at
/usr/local/tmc/mod_tmc_2/sales_markup_matrixd/lib/mod_perl/Apache/MuniCenter
/Util/Calc/MCCalculator.pm line 227.
perl 11853: Matching arguments to new()
perl: $VAR1 = [];
perl: $VAR1 = [];
perl 11853: Match successful: score is 0
perl 11853: Perfect match found, aborting search
perl 11853: creating object new MuniCalculator()
perl 11853:   packet sent is create_object MuniCalculator ()
java:   packet recv is create_object MuniCalculator ()
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a MuniCalculator constructor
java: () = ()?
java:   has matching signature ()
java:   packet sent is ok object:0:2:MuniCalculator
perl 11853:   packet recv is ok object:0:2:MuniCalculator
perl: $VAR1 = bless( {},
'Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator' );
perl: $VAR1 = bless( {
                 'module' => 'MCCalculator',
                 'java_class' => 'MuniCalculator',
                 'class' =>
'Apache::MuniCenter::Util::Calc::MCCalculator::MuniCalculator',
                 'id' => '2',
                 'proto' => bless( {
                                     'module' => 'MCCalculator',
                                     'obj_priv' => $VAR1
                                   }, 'Inline::Java::Protocol' )
               }, 'Inline::Java::Object::Private' );
[Fri May  3 12:20:27 2002] null: running calcYield: 24918YAC0, 04/11/02,
5.25, 100 ...
perl 11853: Matching arguments to calcYield(java.lang.String,
java.lang.String, double, int)
perl: $VAR1 = [
          '24918YAC0',
          '04/11/02',
          '5.25',
          '100'
        ];
perl: $VAR1 = [
          'java.lang.String',
          'java.lang.String',
          'double',
          'int'
        ];
perl 11853: min = -3.4028235e+38, max = 3.4028235e+38, val = 5.25
perl 11853: min = -2147483648, max = 2147483647, val = 100
perl 11853: Match successful: score is 15
perl 11853: calling object(2).calcYield(24918YAC0, 04/11/02, 5.25, 100)
perl 11853:   packet sent is call_method 2 MuniCalculator calcYield
(java.lang.String,java.lang.String,double,int)
scalar:50.52.57.49.56.89.65.67.48 scalar:48.52.47.49.49.47.48.50
scalar:53.46.50.53 scalar:49.48.48
java:   packet recv is call_method 2 MuniCalculator calcYield
(java.lang.String,java.lang.String,double,int)
scalar:50.52.57.49.56.89.65.67.48 scalar:48.52.47.49.49.47.48.50
scalar:53.46.50.53 scalar:49.48.48
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a calcYield method
java: (java.lang.String,java.lang.String,double,int) =
(java.lang.String,java.lang.String,double,int)?
java:   has matching signature
(java.lang.String,java.lang.String,double,int)
java:     arg 0 of signature is java.lang.String
java:   class java.lang.String is primitive string
java:   args is scalar -> forcing to java.lang.String
java:     result is 24918YAC0
java:     arg 1 of signature is java.lang.String
java:   class java.lang.String is primitive string
java:   args is scalar -> forcing to java.lang.String
java:     result is 04/11/02
java:     arg 2 of signature is double
java:   class double is primitive numeric
java:   args is scalar -> forcing to double
java:     result is 5.25
java:     arg 3 of signature is int
java:   class int is primitive numeric
java:   args is scalar -> forcing to int
java:     result is 100
java:   packet sent is ok undef:
perl 11853:   packet recv is ok undef:
perl 11853: fetching member variable 'Yield'
perl 11853: getting object(2)->{Yield}
perl 11853:   packet sent is get_member 2 MuniCalculator Yield double undef:
java:   packet recv is get_member 2 MuniCalculator Yield double undef:
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a Yield member
java:   has matching type double
java:   class double is primitive numeric
java:   args is undef -> forcing to double 0
java:     result is 0.0
java:   class java.lang.Double is primitive numeric
java:   packet sent is ok scalar:48.46.48
perl 11853:   packet recv is ok scalar:48.46.48
perl 11853: returning member (0.0)
perl 11853: fetching member variable 'AccruedInterest'
perl 11853: getting object(2)->{AccruedInterest}
perl 11853:   packet sent is get_member 2 MuniCalculator AccruedInterest
double undef:
java:   packet recv is get_member 2 MuniCalculator AccruedInterest double
undef:
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a AccruedInterest member
java:   has matching type double
java:   class double is primitive numeric
java:   args is undef -> forcing to double 0
java:     result is 0.0
java:   class java.lang.Double is primitive numeric
java:   packet sent is ok scalar:48.46.48
perl 11853:   packet recv is ok scalar:48.46.48
perl 11853: returning member (0.0)
perl 11853: fetching member variable 'AccrualDays'
perl 11853: getting object(2)->{AccrualDays}
perl 11853:   packet sent is get_member 2 MuniCalculator AccrualDays long
undef:
java:   packet recv is get_member 2 MuniCalculator AccrualDays long undef:
java:   class MuniCalculator is reference
java:   class MuniCalculator is reference
java: found a AccrualDays member
java:   has matching type long
java:   class long is primitive numeric
java:   args is undef -> forcing to long 0
java:     result is 0
java:   class java.lang.Long is primitive numeric
java:   packet sent is ok scalar:48
perl 11853:   packet recv is ok scalar:48
perl 11853: returning member ()


Which seems to crank through just fine.

I'm not sure why at this point minute changes are causing this thing to hang
but I certainly need resolution ASAP.

If anyone has suggestions please let me know.




Reply via email to