簡體   English   中英

Talend Open Studio將作業導出為Web服務並在沒有URL參數的情況下調用它

[英]Talend Open Studio exporting job as a webservice and calling it without URL parameters

我是第一次與Talend合作。 我創建了一個Talend Job,並將其導出為AXIS Web服務war文件。 我已將此部署在tomcat容器上。

現在,為了調用此Web服務,通​​過傳遞上下文參數的值,我需要構建一個帶有設置值的URL。

例如,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太長,並且URL中有一些字符需要正確編碼。 這讓我很傷心。 即使現在可以使用,但根據URL的長度或我做得正確的編碼,以后可能會中斷。

我想知道並希望因為這是一個Web服務調用,尤其是SOAP調用,所以我們不能在XML中設置這些參數嗎? 創建一個肥皂信封並將其傳遞到Web服務? 甚至可能生成可從WSDL使用的類,並以正確的方式調用Web服務,這與看起來如此恐怖的URL相反。

不幸的是,據我所知,沒有一種方法可以用更漂亮的URL來調用生成的war。

另一種選擇是將Web服務器放置在其前面,並使用重定向來構建必要的URL。

為了調用Talend Web服務,您可以構造一個發布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>

以上似乎有效。 希望有人可以確認。

感謝: 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等將作為上下文變量傳遞的參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM