gpt4 book ai didi

java - 如何从 Maven 项目在 JBoss 上运行 Talend 作业?

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:15 24 4
gpt4 key购买 nike

Talend Open Studio for Data Integration 5.3.1(在 Windows 7 上)导出作业后,如何从我的 Eclipse Maven 项目运行 Talend 作业?哪些依赖项是特定于作业的,哪些依赖项是全局的?

我的 Eclipse 项目正在 JBoss 5.1.0.GA 上运行。它为接收的每种文件运行一个 Talend 作业,为每个文件执行 ETL 过程。我通过执行“导出作业 - 自主作业”从 Talend 导出每个作业,并将 JAR 文件添加为 Maven 项目的依赖项。但我不认为我可以通过服务器运行作业来执行此操作。

最佳答案

看起来你做的一切都很好,你所需要的就是创建正确的 pom.xml,它将包含 jar 和 context.properties 到你的项目中。我正在创建一个包含必要文件的 Artifact 。这是我的 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>

然后将此 Artifact 添加为您的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 } );

希望这有帮助。如果您有更多问题,请在评论中发表。

关于java - 如何从 Maven 项目在 JBoss 上运行 Talend 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com