Talend Open Studio将作业导出为Web服务并在没有URL参数的情况下调用它

时间:2015-04-10 01:34:19

标签: java soap axis2 talend

我第一次与Talend合作。我创建了一个Talend Job并将其导出为AXIS webservice war文件。我已经在tomcat容器上部署了它。

现在为了调用这个webservice,通过传递上下文参数的值,我需要构建一个带有设置值的URL。

例如,网址可能与此类似:

http://localhost:10080/StandardParcellor_0.1/services/StandardParcellor?method=runJob&arg1=--context_param%20DeliveryParcelMetadataFileLocation=C:\dev\temp\DMS\b2345678-2234-1234-1234-123456789123\a2345678-2234-1234-1234-123456789123\metadata.xml&arg2=--context_param%20WorkingPath=C:\dev\temp&arg3=--context_param%20DeliveryParcelID=db604807-8606-4107-8d3e-aff08c95db1c&arg4=--context_param%20PackageWorkingFolder=C:\dev\temp\DMS\b2345678-2234-1234-1234-123456789123\a2345678-2234-1234-1234-123456789123

如果您发现我的网址非常长,并且网址中的字符需要正确编码。这让我很悲伤。即使它现在有效,它也可以根据我正在做的URL或编码的长度来打破。

我很想知道,因为这是一个Web服务调用,特别是SOAP调用,我们不能在XML中设置这些参数吗?创建一个肥皂信封并将其传递到Web服务?甚至可能生成我可以从WSDL中使用的类并以正确的方式调用webservice,而不是这个看起来很可怕的URL。

3 个答案:

答案 0 :(得分:0)

不幸的是,就我所知,没有办法让生成的战争可以通过更漂亮的URL进行调用。

另一种选择是使用构建必要URL的重定向将Web服务器放在它前面。

答案 1 :(得分:0)

为了调用Talend Web服务,您可以构建一个post XML并将其发送出去,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tal="http://talend.org">
   <soapenv:Header/>
   <soapenv:Body>
      <tal:args>
         <!--Zero or more repetitions:-->
         <tal:item>--context_param DeliveryParcelMetadataFileLocation=C:/dev/temp/DMS/b2345678-2234-1234-1234-123456789123/a2345678-2234-1234-1234-123456789123/metadata.xml</tal:item>
         <tal:item>--context_param WorkingPath=C:/dev/temp</tal:item>
         <tal:item>--context_param DeliveryParcelID=3a91335b-4789-48c5-b6dc-8fac9c20a8d0</tal:item>
         <tal:item>--context_param PackageWorkingFolder=C:/dev/temp/DMS/b2345678-2234-1234-1234-123456789123/a2345678-2234-1234-1234-123456789123</tal:item>
      </tal:args>
   </soapenv:Body>
</soapenv:Envelope>

上述似乎有效。希望有人能证实。

答案 2 :(得分:0)

信用:https://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html#zz-2.5https://www.talendforge.org/forum/viewtopic.php?id=7423

说你有一个名为x的工作并导出为x_0.1.war。

将以下html文件放在TOMCAT_HOME / webapps / yourapp目录中

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ingest </title>
</head>
<body>
<h1>Please enter values for the job</h1>
<form action="http://localhost:8080/x_0.1/services/x" method="get">
<p>Method:<br><input name="method" type="text" size="30" maxlength="30" value="runJob"></p>
<p>arg1:<br><input name="arg1" type="text" size="60" maxlength="1000" value="--context_param context1=blahblahblah"></p>

<INPUT type="submit" name="submitJob" value="Start Job">  

</form>

</body>
</html>

arg1,arg2,arg3等将作为上下文变量传递的参数