Webservice call issue without input arguments

Dedicated to DataStage and DataStage TX editions featuring IBM<sup>®</sup> Service-Oriented Architectures.

Moderators: chulett, rschirm

Post Reply
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Webservice call issue without input arguments

Post by rajadommeti »

Hi,

I am trying to call a webservice using webservice client stage and response will be sent to a sequential file.

my design is

WS client stage -------> sequential file


I have 2 jobs. one job will take input arguments and gives response. this is working fine.
second job will call different webservice ,web service will not take any input arguments but simply send some output row. when i run the job it is not returning any row. it is not giving any error also. 0 rows read and 0 rows written to output link.

In SoapUI ,it is returning a row but through datastage it is not.

i guess i am doing everything ok but it is not giving output.

select webservice from metadata importer ,load input arguments ,load output message etc..

My question is is it mandatory to pass input arguments in webservice client stage ?
if not what is the appropriate stage and process to follow.

Thanks a lot
RAJ
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

Not sure... a void input message for the Operation would certainly seem legitimate, and I recall doing some like this many years ago, but not in recent releases. Do you get "0" rows on the link, or just don't see anything in your target sequential file?

You might want to try some things to see if they yield extra information...

a) you said this is Server --- turn on tracing...in the run job dialog, choose tracing and then select your WSClient on the left and all the boxes on the right....it may not do anything, but look in the log --- if the trace works under these conditions, you will see a large volume of tracing, along with the xml request and xml response as two entries deep in the trace....those entries will have the SOAP envelope that was sent up, and returned back.....

b) delete all the metadata on the output link and put in one column.....call it SOAPresponse. Make it a longvarchar and give it a length of 99999. Put a single '/' in the Description for that column. Run the job and see what you get.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

eostic wrote:Not sure... a void input message for the Operation would certainly seem legitimate, and I recall doing some like this many years ago, but not in recent releases. Do you get "0" rows on the link, or ...
Hi Ernie,
I am getting '0' rows on the link. But when i run the same WS in SoapUI i am getting 1 row. So if passing void message and arguments to WS client stage is valid then there is some issue in the code ? i will check thoroughly and get back to you. Thanks for your reply.
RAJ
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

eostic wrote:Not sure... a void input message for the Operation would certainly seem legitimate, and I recall doing some like this many years ago, but not in recent releases. Do you get "0" rows on the link, or ...

Hi Ernie,

I used Error Handling Trace so it did not abort however if I use Fatal it is aborting with below error. Any idea ? i am calling the same wsdl but different method and was successful but for the method whick doesn't have input arguments it is gicing below error.


<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:HTTP</faultcode>
<faultstring>(404)Not Found</faultstring>
<detail>
<string>return code: 404
</string>
</detail>
</ns1:Fault>
at com.ascentialsoftware.wsclient.OperationCall.handleRemoteException(OperationCall.java:369)
at com.ascentialsoftware.wsclient.OperationCall.invoke(OperationCall.java:274)
at com.ascentialsoftware.wsclient.WebService.callServiceInternal(WebService.java:1685)
at com.ascentialsoftware.wsclient.WebService.callService(WebService.java:1591)
at com.ascentialsoftware.wsclient.WebService.callService(WebService.java:1544)
at com.ascentialsoftware.wspack.Transformer.process(Transformer.java:104)
at com.ascentialsoftware.jds.StageFactory.runStage(StageFactory.java:544)
at com.ascentialsoftware.jds.StageFactory.runSource(StageFactory.java:335)
RAJ
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

Hi,

Can any one tell me if we can call a web service using web service client stage with out passing any input arguments ? is anyone successful in doing same and got responce from Webservice ? I can call the web service with an empty argument and got response using SoapUI but not able to do same in Datastage. Please let me know. Thanks a lot
RAJ
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

You aren't using the Trace I discussed up above. When you run the job, see if you have a Trace tab in the run dialog. You noted that this is a Server Job, so it should be there. Highlight the Stage on the left and all four boxes on the right. Review the tracing in the ds director log in detail...at the very center you should see the envelope out...and the envelope in......or maybe it never sends anything out....... who knows. That's a good place to start though....and if this is an EE Job, write it again as a Server Job as a test.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

I checked all checkboxes in trace but it did not give any more information. I tried to validate and it is throwing this warning 'Abnormal termination of stage CustomeContractList..Sequential_File_18.IDENT1 detected'

my design is
WS client stage ----> sequntial_file
RAJ
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

Well, abnormal termination is different than zero rows.

See if you have another service. I just did one and it worked fine. WSClient to a Transformer (just because) to a Sequential.

Entirely void input for the WSDL.

Did you import the WSDL successfully? Any errors when you chose the Operation? You might want to re-iimport that Operation just in case.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

Hi Ernie,

i tried with entire output as one line using '/' and longvarchar 9999. Still same issue. i Tried to use transformer also but of no use. I used Trace in Director by highlighting stage and i can see request envolep and in response envolep i see 404 error.I reimported the wsdl many times, i did not find any errors while importing. I have another service (in the same wsdl) and it is working fine.

My only option or doubt is same wsdl has 2 services (2 methods). it is working for 1 service and failing for 2nd service. so is it not identifying the other method. Is there any limitation to have one method for 1 wsdl in datastage perspective?
RAJ
lstsaur
Participant
Posts: 1139
Joined: Thu Oct 21, 2004 9:59 pm

Post by lstsaur »

Please post the WSDL.
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

Hi All,

How can we save WSDL to a file and configure web services pack manually. saving to a file means save as xml and use xml meta data importer? I have an issue with datastage not reading one of 2 methods in a wsdl, so i want to try this option. Please advice
RAJ
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

It shouldn't be any different. The WSDL Metdata Importer will simply read the wsdl from disk or from the web.... you get it to disk simply by going to the wsdl yourself in your browser, and then saving it.

Best bet right now is for you to try and find another service that also has no input arguments, so that you have something to compare to, since this is something that basically works...

It was suggested that you paste the wsdl here, so that we can take a look...or if it is publicly available WSDL, just give us the URL.

As noted earlier, if this is an EE job, try a Server Job, and maybe vice versa also. The Job I tested it on is a Server Job with WSClient to Transformer to Sequential. I did nothing except to import the WSDL Operation with void input, "Load" that Operation into the WSClient, "Load" the message details onto the output link, and then propagate that to the Seq target.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

Hi All,

It is working at last. as expected it is void arguments only. i did not try a new service but same wsdl but i sent a dummy argument. from yesterday i was sending but today i sent a dummy argument and in the mapping field i gave method name like this "/ns1:retrieveContRequest/CustomConWebSvcTOList/contractId/text()"
and it started working. it is wierd..it is dummy argument there is no field like contractId and we need to pass method name..its wierd...but worked...


Hi Ernie,

Thanks a lot for trying a service with void arguments for me and your valuable suggetions , i followed all steps except that test in EE edition as we don't have licence.
RAJ
lstsaur
Participant
Posts: 1139
Joined: Thu Oct 21, 2004 9:59 pm

Post by lstsaur »

Junks in, junks out :-).
rajadommeti
Premium Member
Premium Member
Posts: 43
Joined: Wed Feb 27, 2008 1:08 am

Post by rajadommeti »

lstsaur wrote:Junks in, junks out :-).
yep :). thank you..
RAJ
Post Reply