|
Did you try looking at the job on the remote system? My first guess is that there is a problem there and it's waiting for a message to be answered. Matt -----Original Message----- From: web400-bounces@xxxxxxxxxxxx [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of James Rich Sent: Thursday, March 22, 2007 5:22 PM To: Web Enabling the AS400 / iSeries Subject: Re: [WEB400] calling rpg3 programs from tomcat on another box? On Tue, 20 Mar 2007, Joe Pluta wrote:
The Java Toolbox (JTOpen) will allow a Java program on any machine (including a servlet under Tomcat) to call a program on the iSeries.
The
machine has to be at V4R4 or above, I believe, but that's pretty much
the
only issue.
Ok, I've been reading and re-reading the javadocs on how to do this. I think I have it mostly correct, but when I try to load a page that uses my class the page never finishes loading and appears to never return from program.run(). Could some kind soul look at my code below and tell me what I've done wrong? The RPG program *entry plist: C *entry plist C parm customer 5 0 C parm discountcode 2 C parm linecode 2 C parm part 18 C parm quantity 7 0 C parm price 9 4 The first five parms are all input, the last is returned. The relavent portion of my class: (here customer.getDiscountCategory(), supplier, and formatted are all Strings, price is a Double) ProgramCall program = new ProgramCall(newConn1); try { // Initialize the name of the program to run. String programName = "/QSYS.LIB/DSTCUST.LIB/TCGETPRCIR.PGM"; // Set up the 6 parameters. ProgramParameter[] parameterList = new ProgramParameter[6]; // First parameter is customer number (5,0) AS400PackedDecimal custnum = new AS400PackedDecimal(5, 0); //parameterList[0] = new ProgramParameter(custnum.toBytes(customer.getId())); parameterList[0] = new ProgramParameter(custnum.toBytes(60600.0)); // Second parameter is discount code (2) AS400Text disctext = new AS400Text(2); parameterList[1] = new ProgramParameter(disctext.toBytes(customer.getDiscountCategory())); // Third parameter is line code (2) AS400Text linetext = new AS400Text(2); parameterList[2] = new ProgramParameter(linetext.toBytes(supplier)); // Fourth parameter is part (18) AS400Text parttext = new AS400Text(18); parameterList[3] = new ProgramParameter(parttext.toBytes(formatted)); // Fifth parameter is quantity (7,0) AS400PackedDecimal qtynum = new AS400PackedDecimal(7, 0); parameterList[4] = new ProgramParameter(qtynum.toBytes(1)); // Sixth parameter is price (9,4) AS400PackedDecimal pricepd = new AS400PackedDecimal(9, 4); parameterList[5] = new ProgramParameter(pricepd.toBytes(0.0)); // Set the program name and parameter list. program.setProgram(programName, parameterList); // Run the program. if (program.run() != true) { // Report failure. System.out.println("Program failed!"); // Show the messages. AS400Message[] messagelist = program.getMessageList(); for (int i = 0; i < messagelist.length; ++i) { // Show each message. System.out.println(messagelist[i]); } // Else no error, get output data. } else { AS400PackedDecimal priceresult = new AS400PackedDecimal(9, 4); price = priceresult.toDouble(parameterList[5].getOutputData()); System.out.println("Price obtained"); } } catch (Exception e) { System.out.println("Program " + program.getProgram() + " issued an exception!"); e.printStackTrace(); } // Done with the server. system.disconnectAllServices(); // Return connection to pool. testPool1.returnConnectionToPool(newConn1); James Rich It's not the software that's free; it's you. - billyskank on Groklaw
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.