[英]How to run a Talend Job on JBoss from a Maven project?
從Talend Open Studio for Data Integration 5.3.1 (在Windows 7上)導出作業之后,如何從Eclipse Maven Project中運行Talend作業? 特定於作業的依賴項是什么,全局性的依賴項是什么?
我的Eclipse項目正在JBoss 5.1.0.GA上運行。 它為接收的每種文件運行一個Talend Job,並為每種文件執行ETL處理。 我正在通過執行“導出作業-自主作業”從Talend導出每個作業,並且正在將JAR文件添加為Maven項目的依賴項。 但是我不認為我可以在服務器上運行作業。
看來您做得不錯,您所需要的只是創建正確的pom.xml,其中將jar和context.properties包含到您的項目中。 我正在創建一個包含必要文件的工件。 這是我pom的一個示例:
<copy todir="${project.build.outputDirectory}">
<fileset dir="${basedir}/My_Job_Main/" includes="*.jar"/>
</copy>
<jar destfile="${project.build.outputDirectory}/myJar.jar">
<zipfileset dir="${basedir}/My_Job_Main/"
includes="**/my_job_main/**"
excludes="**/src/**,**/items/**"/>
</jar>
<zip destfile="${basedir}/target/my.artifact.id-1.0-SNAPSHOT.jar">
<zipgroupfileset dir="${project.build.outputDirectory}" includes="*.jar"/>
</zip>
而不是將此工件添加為對您的ear文件的依賴項。
在將要運行此作業的類中,只需導入Job類並使用以下命令執行函數:
My_Job_Main job = new My_Job_Main();
job.runJobInTOS(params);//params -> is the String array of context variables
解決方案2:
但是這種解決方案是我不喜歡的。 因此,我建議您在導出作業時導出作業並動態加載它們,而無需使用Maven進行部署。 它使您可以靈活地更改作業,而無需重新啟動服務器。
這是將動態加載作業jar文件並執行它們的代碼示例:
URL [] urls = new URL[length];
File jar = new File("path_to_jo_jar_file");
urls[0] = jar.toURI().toURL();
String params[] = new String[length];
params[0] = "--context=Default";
params[1] = "--context_param";
params[2] = "paramName=paramValue";
Class<?>[] params_type = new Class[]{String[].class};
URLClassLoader child = new URLClassLoader(urls , this.getClass().getClassLoader());
Class classToLoad = Class.forName( "my_job_main.My_Job_Main", true, child);
Method method = classToLoad.getDeclaredMethod ("runJobInTOS", params_type);
method.setAccessible(true);
Object instance = classToLoad.newInstance();
method.invoke(instance, new Object[]{ args } );
希望這可以幫助。 如果您還有其他問題,請發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.