Tom Kane
2012-10-31 22:20:58 UTC
Hi,
I am trying to work with Inline::Java from within a Linux/nginx/fastcgi/Catalyst framework. I need to be able to interface to a PayPal .jar file, which is the only method of access I have to their "Hosted Checkout" credit card processing.
I have a perl module (.pm) that executes an Inline Java STUDY on the PayPal .jar file. I can access this module from a non-Catalyst perl program and everything works fine. However, if I try to execute this same module from within a Catalyst module, there is a problem and I don't know if this stems from something being done within Inline::Java's STUDY process or whether Catalyst is doing or missing something.
Before going forward, I would like to add that I have been able to successfully use Catalyst together with Inline::Java where I have a simple class defined in a very simple .jar file. Works like a champ. I use a simple STUDY command:
use Inline Java => 'STUDY',
CLASSPATH => "/path/to/Greeter.jar",
STUDY => [ Greeter ] ;
So it's not as if there are incompatibilities between Catalyst and Inline::Java.
The problem comes from the fact that the PayPal .jar file's methods are more complex than the simple methods used in my successful Catalyst-Inline::Java test.
I declare the PayPal methods that I'm trying to use as follows:
use Inline Java => 'STUDY',
CLASSPATH => "/path/to/payflow.jar",
STUDY => [
'paypal.payflow.AuthorizationTransaction',
'paypal.payflow.BillTo',
'paypal.payflow.Currency',
'paypal.payflow.Invoice',
'paypal.payflow.PayflowConnectionData',
etc.
];
The problem seems to be a namespace issue as I get the error message:
... (perhaps you forgot to load "paypal::payflow::Invoice"?)
As I said, the multi-layered PayPal methods declaration works successfully when I execute it from a non-Catalyst perl program. But it seems as though Catalyst expects there to be separate sub-directories for each of the methods (given the use of the :: separators between paypal, payflow, and Invoice).
Have I missed something with regard to how Inline::Java STUDY works when there is a multi-layered library? (Except it works okay outside of Catalyst, which, of course, may be purely accidental.)
Thanks for any help.
Tom
I am trying to work with Inline::Java from within a Linux/nginx/fastcgi/Catalyst framework. I need to be able to interface to a PayPal .jar file, which is the only method of access I have to their "Hosted Checkout" credit card processing.
I have a perl module (.pm) that executes an Inline Java STUDY on the PayPal .jar file. I can access this module from a non-Catalyst perl program and everything works fine. However, if I try to execute this same module from within a Catalyst module, there is a problem and I don't know if this stems from something being done within Inline::Java's STUDY process or whether Catalyst is doing or missing something.
Before going forward, I would like to add that I have been able to successfully use Catalyst together with Inline::Java where I have a simple class defined in a very simple .jar file. Works like a champ. I use a simple STUDY command:
use Inline Java => 'STUDY',
CLASSPATH => "/path/to/Greeter.jar",
STUDY => [ Greeter ] ;
So it's not as if there are incompatibilities between Catalyst and Inline::Java.
The problem comes from the fact that the PayPal .jar file's methods are more complex than the simple methods used in my successful Catalyst-Inline::Java test.
I declare the PayPal methods that I'm trying to use as follows:
use Inline Java => 'STUDY',
CLASSPATH => "/path/to/payflow.jar",
STUDY => [
'paypal.payflow.AuthorizationTransaction',
'paypal.payflow.BillTo',
'paypal.payflow.Currency',
'paypal.payflow.Invoice',
'paypal.payflow.PayflowConnectionData',
etc.
];
The problem seems to be a namespace issue as I get the error message:
... (perhaps you forgot to load "paypal::payflow::Invoice"?)
As I said, the multi-layered PayPal methods declaration works successfully when I execute it from a non-Catalyst perl program. But it seems as though Catalyst expects there to be separate sub-directories for each of the methods (given the use of the :: separators between paypal, payflow, and Invoice).
Have I missed something with regard to how Inline::Java STUDY works when there is a multi-layered library? (Except it works okay outside of Catalyst, which, of course, may be purely accidental.)
Thanks for any help.
Tom