|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
FTPSend Problems |
« View previous topic :: View next topic » |
Author |
Message
|
jax |
Posted: Mon Sep 01, 2003 4:37 am Post subject: FTPSend Problems |
|
|
 Novice
Joined: 10 Jul 2003 Posts: 12 Location: South Africa
|
I have installed the FTPSend node (ia73) to my WMQI set-up.
I re-checked that all the files are at the correct locations.
in my compute node, I use the following ESQL command to set the FTP File Name:
SET OutputRoot.WKSPACE.FTPSend1.FileName = 'MyFolder/BBB.txt';
When I deploy my message flow, I get the following in my Log file:
WKSPACE
Error: Failed to locate constant
...and this is the Error in the Application Log:
( BRYANSTONBROKER.default ) No constant for parser class name for root element name 'WKSPACE'.
The message broker could not locate a constant for a parser class name for a root element name.
Contact the author or supplier of the loadable implementation library implementing the parser to check whether or not the constant has been registered. If it has not, install an updated version of the loadable implementation library. If registration has taken place, contact your IBM support center.
Any ideas how to fix this, or what causes it?
Thank you in advance
Jax |
|
Back to top |
|
 |
Craig B |
Posted: Tue Sep 02, 2003 9:01 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
Hi,
If your broker is reporting that no parser name can be found called WKSPACE, then it means that no parser has registered with this name on broker start-up. Looking at the contents supplied with the FTPSend node it would seem that two lils are supplied, and these are FtpSend.lil and workspace.lil. From the descriptions given the FtpSend.lil is for node itself, and the workspace.lil is for the User Parser than processes the WKSPACE folder. This would suggest that you have not put the workspace.lil file in the bin directory of your Windows broker installation. If you put this lil file in this directory and then restart the broker, then this should resolve your error.
Hope this helps. _________________ Regards
Craig |
|
Back to top |
|
 |
jax |
Posted: Tue Sep 02, 2003 9:29 pm Post subject: |
|
|
 Novice
Joined: 10 Jul 2003 Posts: 12 Location: South Africa
|
Thank you Craig, it helped. Funny enough, I've set up the FTP Node for all the developers in our team, and theirs worked... then I figured I missed something on my own installation. You confirmed it, thanks
I have installed the FTP Node successfully, but I have another problem:
If I cofigure the 'FTP File Name' properties of the FTP Node with a hard-coded file name, it works fine. But obviously you want to manipulate the file name in your Compute node. I use the following command in my compute node:
SET OutputRoot.WKSPACE.FTPSend.FileName = '/MyDirectory/BBB.txt';
...this line as the last line in my compute node.
But then it corrupts my selected data... it seems like it throws away the first part of my selected data set, and does some funnies to some other fields.
I have an MRM that I use for my output, I have an XML message on the input side, I use the following command to change to the output message set:
SET "OutputRoot".MQMD."Format" = 'TDS';
...this line just about right at the top of the compute node.
I is very funny, because the process for selecting the data did not change.
Any ideas why this happens?
Thanks for your assistance so far.
Jax |
|
Back to top |
|
 |
Craig B |
Posted: Wed Sep 03, 2003 5:33 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
Hi,
Can you be more specific about your scenario and show what the data looks like before you added the statement to change the filename? Then what it looks like with this statement in?
The first point to note is that the MQMD.Format field does not set the TDS physical format for an MRM parser, and this maybe causing your problems. The Format field in the MQMD is used to specify the format of the data that follows the MQMD, be it a header or a message body. This field is used by base MQSeries so it knows how to data convert the MQSeries message contents. The field you need to set in the message flow to change you message to a TDS message is :
Code: |
SET OutputRoot.Properties.MessageFormat = 'TDS';
|
...assuming the identifier of your TDS wire format in the messageSet is 'TDS'.
Can you make this change and see if this helps your scenario. If it does not, can you provide further details on how the data changes when you change the filename field in the WKSPACE folder? _________________ Regards
Craig |
|
Back to top |
|
 |
jax |
Posted: Wed Sep 03, 2003 10:25 pm Post subject: |
|
|
 Novice
Joined: 10 Jul 2003 Posts: 12 Location: South Africa
|
Craig,
...hope I'm not going to drive you crazy with this...
here's the details of what I have:
1. I have an XML message on the Input node, mapped to a Message Set, rather elementary XML that simply puts the time on the Input queue:
<?xml version='1.0' encoding='UTF-8'?>
<CCB>
<ExtractDate>Wed Sep 03 16:14:40 GMT+02:00 2003</ExtractDate>
</CCB>
This is simply used as trigger to start the Compute Node.
2. Compute Node:
I have the Input MRM (for the XML)
Because I need to put out a CWF Message, I use the following code:
SET "OutputRoot".MQMD."Format" = 'TDS';
... this is where you suggested that I use this line:
SET OutputRoot.Properties.MessageFormat = 'TDS';
But when I replace it with the latter, I get the following error in my compute node:
Quote: |
Message does not contain a valid MQMD |
My compute node simpy does a select from the database with a passthru statement:
Code: |
passthru('SELECT
RPAD(''CLIENT'',7,'' '') "RecordId",
RPAD('' '',6,'' '') "TransxId",
LPAD(54,4,''0'') "CompanyNumber",
LPAD(BMMR.MEMBERSHIP_NUMBER,13,''0'') "ClientNumber",
LPAD(0,2,''0'') "ClientProvince",
LPAD(0,2,''0'') "ClientRegion"
FROM MDS_BACK_END_MMR_TEMPS BMMR
WHERE BMMR.CONTRIB_TYPE IN (''C'',''S'')
AND BMMR.EFFECTIVE_DATE IN (''200207'')
AND BMMR.PSCHEME = ''MCD'' |
Then I have a simple loop to get the data mapped to the MRM:
Code: |
WHILE A <= CARDINALITY(Environment.Results[]) DO
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."RECORD_ID_1" = Environment.Results[A].RecordId;
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."TRANSX_ID_1" = Environment.Results[A].TransxId;
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."COMPANY_NUMBER_1" = Environment.Results[A].CompanyNumber;
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."CLIENT_NUMBER" = Environment.Results[A].ClientNumber;
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."CLIENT_PROVINCE" = Environment.Results[A].ClientProvince;
SET "OutputRoot"."MRM"."MESSAGE_ELEMENT"[A]."CLIENT_REGION" = Environment.Results[A].ClientRegion;
SET A=A+1;
END WHILE; |
The very last line in the Compute Node has this statement:
Code: |
SET OutputRoot.WKSPACE.FTPSend.FileName = '/bzzz/BBB.txt'; |
This line does change my file Name to be 'BBB.txt', it does write the file to the FTP Directory,
but it does the following with my data:
Code: |
0000
CLIENT 005400147004999380000
CLIENT 005400147005016370000 |
If I exclude this line and let the FTP Node dictate what the file name should be, it works fine, and my data looks like this, which is correct:
Code: |
CLIENT 005400143004118590000
CLIENT 005400251015820790000
CLIENT 005400147005000850000 |
I am sure the key to the solution is in the reply you sent on the line:
SET OutputRoot.Properties.MessageFormat = 'TDS';
...and the error that I got from it confirms this.
The question is, how can I set up the MRM to get past the error:
Quote: |
Message does not contain a valid MQMD |
If you have anything else that I can try, please tell me.
And thank you for the help so far, Craig
jax |
|
Back to top |
|
 |
kirani |
Posted: Wed Sep 03, 2003 10:34 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Jax,
I believe you are missing "Copy Message Headers" in your compute node. Also, if you are using MRM to format your output message then you will need following lines of code in your compute node,
Code: |
SET OutputRoot.Properties.MessageFormat = 'TDS';
SET OutputRoot.Properties.MessageSet = 'DXXXX'; -- Your message set Identifier
SET OutputRoot.Properties.MessageType = 'm_XXXX'; -- Your message name
|
_________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
jax |
Posted: Wed Sep 03, 2003 11:10 pm Post subject: |
|
|
 Novice
Joined: 10 Jul 2003 Posts: 12 Location: South Africa
|
Kirani,
Thanks for your quick reponse.
I have changed the Compute node as you suggested. This is what i have in my Compute Node, right at the top:
Code: |
DECLARE C INTEGER;
SET C = CARDINALITY(InputRoot.*[]);
DECLARE I INTEGER;
SET I = 1;
WHILE I < C DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I=I+1;
END WHILE;
SET OutputRoot.Properties.MessageSet = 'DTI47J40BC001';
SET OutputRoot.Properties.MessageType = 'CCB_MESSAGE'; |
...then I have the following line of code that changes the message format:
Code: |
SET OutputRoot.Properties.MessageFormat = 'TDS'; |
following this line, I have the SQL Select, and then the loop to write the data to my Output MRM.
But still my data looks like this if I want to change the FTP file name in my Compute Node:
Last line in my Compute node:
Code: |
SET OutputRoot.WKSPACE.FTPSend.FileName = '/bzzz/BBB.txt'; |
... this is waht I get in the text file:
Code: |
0000
CLIENT 005400147004999380000
CLIENT 005400147005016370000 |
...as opposed to the following if I let the FTPNode Properties dictate the file name as part of its properties:
Code: |
CLIENT 005400143004118590000
CLIENT 005400251015820790000
CLIENT 005400147005000850000 |
I don't understand, could it be a bug in the FTP Node?
Please have a look at this and PLEASE help if you can.
Thanks
Jax |
|
Back to top |
|
 |
jax |
Posted: Fri Sep 05, 2003 3:15 am Post subject: |
|
|
 Novice
Joined: 10 Jul 2003 Posts: 12 Location: South Africa
|
Guys,
I have solved my FTP problem. I have tested my message flow in DEBUG mode (the emphasis on the ...BUG part of it) and this is exactly where the bug is...
If I deploy my message flow in DEBUG, it creates my file with data missing, as in:
Code: |
0000
CLIENT 005400147004999380000
CLIENT 005400147005016370000 |
...but, without changing anything, just pushing the flow outside debug, I get the following:
Code: |
CLIENT 005400143004118590000
CLIENT 005400251015820790000
CLIENT 005400147005000850000 |
...wonderful, isn't it?
So for all you out there that intend on using the FTP Send Node(ia73), please be aware of this, it can potentially drive you crazy.
Thank you guys, for your efforts in solving the problem, apart from this bug, you did point me in the right direction with the suggestions you made.
jax |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|