`

在Web中集成Kettle

 
阅读更多

原创文章,转载请注明出处:http://qq85609655.iteye.com/blog/1306555

 

上篇文章中Kettle4 Repository 操作示例 (登陆资源 ...

 

今天,想将kettle整合到web工程中。这个想法一出现,就马上查找资料,可惜资料太少,没有现成的。

后面查看源码。。。终于整合到web工程中,方法如下:

编写一个Servlet,工程启动时成功,顺利完成集成。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
	<display-name>kettleapi4_2</display-name>
	<servlet>
		<servlet-name>KettleStartServlet</servlet-name>
		<servlet-class>zhangxin.kettle.servlet.KettleStartServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
		<init-param>
			<param-name>dir</param-name>
			<param-value>/test</param-value>
		</init-param>
		<init-param>
			<param-name>jobname</param-name>
			<param-value>测试作业</param-value>
		</init-param>
	</servlet>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

Servlet代码如下:

 

package zhangxin.kettle.servlet;

import java.io.File;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.Result;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.plugins.RepositoryPluginType;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.RepositoriesMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.RepositoryElementMetaInterface;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.repository.StringObjectId;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;

public class KettleStartServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4122742794095256794L;

	public void init() throws ServletException {
		try {
			// 设置Kettle的初始化配置信息路径
			initKettleEnvironment();

			ServletConfig config=getServletConfig();
			//通过 ServletConfig对象获取配置参数:dirverString
			String dir = config.getInitParameter("dir");
			String jobname = config.getInitParameter("jobname");
			executeJob(dir, jobname);
		} catch (KettleException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 设置Kettle的初始化配置信息路径
	 * @throws KettleException
	 */
	private void initKettleEnvironment() throws KettleException {
		// 获得执行类的当前路径
		String user_dir = System.getProperty("user.dir");
		String kettleHome = this.getServletContext().getRealPath(File.separator + "WEB-INF");
		// Kettle初始化需要修改相应的配置路径
		System.setProperty("user.dir", kettleHome);
		System.setProperty("KETTLE_HOME", kettleHome);
		// 运行环境初始化(设置主目录、注册必须的插件等)
		KettleEnvironment.init();
		// Kettle初始化完毕,还原执行类的当前路径
		System.setProperty("user.dir", user_dir);
	}

	/**
	 * Kettle执行Job
	 * @throws KettleException
	 */
	public void executeJob(String dir, String jobname) throws KettleException {
		
		RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
		// 从文件读取登陆过的资源库信息
		repositoriesMeta.readData();
		// 选择登陆过的资源库
		RepositoryMeta repositoryMeta = repositoriesMeta.findRepository("4_2");
		// 获得资源库实例
		Repository repository = PluginRegistry.getInstance().loadClass(RepositoryPluginType.class, repositoryMeta, Repository.class);
		repository.init(repositoryMeta);
		// 连接资源库
		repository.connect("admin", "admin");

		RepositoryDirectoryInterface tree = repository.loadRepositoryDirectoryTree();
		RepositoryDirectoryInterface fooBar = tree.findDirectory(dir);
		JobMeta jobMeta = repository.loadJob(jobname, fooBar, null, null);
		// 执行指定作业
		Job job = new Job(repository, jobMeta);
		job.start();
		job.waitUntilFinished();
		Result result = job.getResult();
		result.getRows();
		if (job.getErrors() > 0) {
			throw new RuntimeException("There were errors during transformation execution.");
		}
		repository.disconnect();
	}
}

 

这样就集成好了。。。

下面是工程的结构

 

KETTLE结构

 

工程中的包和资源如下

 

libraries=
../lib
../libext
../libext/commons
../libext/elasticsearch
../libext/feeds
../libext/google
../libext/hive
../libext/hl7
../libext/JDBC
../libext/jersey
../libext/jfree
../libext/mondrian
../libext/pentaho
../libext/poi
../libext/reporting
../libext/rules
../libext/salesforce
../libext/spring
../libext/web
../libext/webservices
../libswt

classpath=
../
../ui
../ui/images
../libext/mondrian/config
../libext/pentaho/pigConf

 

同时,将 kettle启动时自动生成的     .kettle 文件夹

 

拷贝到 WEB-INF文件夹下(因为文件夹.kettle 前面有个'点号'。造成文件夹没能在上面的工程结构图中显示)

  • 大小: 61.8 KB
3
1
分享到:
评论
16 楼 huangtianleyuan 2016-11-05  
各位大神,有没有集成好的,请不吝赐教 qq:375249222
15 楼 1321941138 2016-03-31  
1282265122@qq.com 求楼主一份源码,非常感谢。。。
14 楼 fenggenqi 2016-03-15  
545862701@qq.com 求楼主一份源码
13 楼 lw0018soft 2015-09-12  
能否共享一份十分感谢,181818070@qq.com
12 楼 bettre 2015-06-08  
楼主还有源码没?求一份儿。liyong.amy@qq.com,谢谢!
11 楼 runing9 2015-02-27  
1021575030@qq.com  
10 楼 runing9 2015-02-27  
楼主,求源码!苦学中,请赐教!感谢大侠!
9 楼 高增强 2015-01-26  
楼主有保留源代码吗?能否共享一份,邮箱:it_sir@126.com,十分感谢
8 楼 Rylai_CM 2014-08-11  
楼主,我也要实现在tomcat中通过quartz调用kettle,但是到了KettleEnvironment.init();这里就会报错,所以也想把kettle加载到tomcat中,可否把源码分享与我,谢谢了,yiban_1101@126.com。
7 楼 qq85609655 2014-07-29  
ads008 写道
请问下,我在web上调用kettle 的转换,因为我使用了自己开发的kettle插件,按楼主的说明放了plugins文件,但是启动还是报错
ERROR 14-07 10:34:47,883 - null - 一个数据库错误发生在从资源库文件读取转换时
org.pentaho.di.core.exception.KettleStepLoaderException:
Unable to load class for step/plugin with id [UpdateFlag
]. Check if the plugin is available in the plugins subdirectory of the Kettle distribution.

信息量太少,请加我QQ:85609655
6 楼 ads008 2014-07-14  
请问下,我在web上调用kettle 的转换,因为我使用了自己开发的kettle插件,按楼主的说明放了plugins文件,但是启动还是报错
ERROR 14-07 10:34:47,883 - null - 一个数据库错误发生在从资源库文件读取转换时
org.pentaho.di.core.exception.KettleStepLoaderException:
Unable to load class for step/plugin with id [UpdateFlag
]. Check if the plugin is available in the plugins subdirectory of the Kettle distribution.
5 楼 Jz_lvcha 2014-03-11  
楼主有保留源代码吗?能否共享一份,邮箱:woshizhujing@126.com,十分感谢
4 楼 20130710zsw 2013-12-08  
楼主大才,我需要做个web数据交换平台,请求指点;
楼主有保留源代码吗?能否共享一份,邮箱:18240538751@163.com,十分感谢
3 楼 xxf880324 2013-11-21  
xxf880324 写道
wzmmao 写道
楼主有保留源代码吗?能否共享一份,邮箱:xxf880324@163.com,十分感谢


2 楼 xxf880324 2013-11-21  
wzmmao 写道
楼主有保留源代码吗?能否共享一份,邮箱:wzmmao@163.com,十分感谢

1 楼 wzmmao 2013-06-06  
楼主有保留源代码吗?能否共享一份,邮箱:wzmmao@163.com,十分感谢

相关推荐

    web应用集成kettle

    将kettle集成值web应用中,不再需打开kettle窗口运行,并通过spring自动任务进行数据抽取,数据库采用数据源(jndi)的方式进行管理。配置简单方便。(之前需要kettle打开其运行环境,并配置数据库连接的相关信息)

    kettle-manager集成web页面调度

    4. **权限管理**: 在Web页面中集成Kettle Manager时,需要考虑权限控制。确保只有授权的用户可以访问和操作作业。这可以通过Kettle自身的用户认证或与企业现有认证系统(如LDAP、AD)集成来实现。 5. **界面设计**:...

    基于Java与Web技术的KettleWeb数据集成平台源码

    项目概述:KettleWeb数据集成平台是一款基于Java与Web技术的开源数据集成工具。此平台源码基于Kettle原生版本6.1.0.1开发,扩展了Web端操作功能,便于用户进行数据集成工作。 技术栈:项目主要采用Java语言进行开发...

    java集成kettle所有jar包

    Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...

    基于kettle实现的web版数据集成平台,致力于提供web可拖拽的数据集成平台。.zip

    在Kettle中,可以通过多种方式实现数据采集,如使用"表输入"步骤连接到数据库提取数据,或者使用"文件输入"步骤读取CSV、Excel、XML等文件。在Web版的数据集成平台上,用户无需编写代码,只需通过拖放操作就能设定...

    java集成kettle执行作业文件.rar

    在Java集成Kettle执行过程中,需要注意异常处理,捕获并处理可能出现的错误。同时,Kettle提供了日志功能,可以通过配置日志级别和日志文件路径,记录执行过程中的信息,方便调试和问题定位。 8. **应用场景** ...

    web版kettle.rar

    【标题】"Web版Kettle"指的是基于网页的Kettle数据集成工具,它允许用户在浏览器环境中进行数据处理和转换工作。Kettle是Pentaho Data Integration(PDI)项目的一部分,提供了一种图形化的界面,用于设计、执行和...

    Kettle源码(Web版)

    开发者可以查看源码中的`Step`和`Job Entry`类,了解如何创建自定义数据处理组件,并将其集成到Kettle中。 3. **数据流模型**:Kettle使用基于流的模型处理数据,每个步骤之间通过数据流连接。源码分析可以揭示这种...

    kettle的web版.zip

    在这个场景中,我们讨论的是Kettle的Web版,即"webKettle",它将Kettle的功能扩展到了Web环境中,使得用户可以通过浏览器在线进行ETL操作。 首先,我们来详细了解一下Kettle。Kettle由社区驱动,提供了一系列的数据...

    kettle 集成到自己的应用中_实例

    想,kettle 集成到自己的web应用中。只要把kjb文件扔到webApp中就能够自动执行该JOB。可以初步解决项目问题。 附件是初步成果,web目录结构下源码。lib因为上传大小限制就没有上传,可以看.classPath文件 其实都是...

    springboot整合kettle项目源码

    标题 "springboot整合kettle项目源码" 描述了一个基于Spring Boot框架的集成Kettle(Pentaho Data Integration,简称KDI)的工程实例。Kettle是一款强大的ETL(提取、转换、加载)工具,它允许开发者通过编写Java...

    kettle的web版本,自己编译的war包,直接放到tomcat下运行,然后http://localhost:8080/web

    在标题和描述中提到的“kettle的web版本”,指的是Kettle的一种Web应用程序实现,让用户可以通过Web界面来管理和执行Kettle作业和转换。 这个web版本被称为Webspoon,是一个开源的、基于Java的Kettle客户端。...

    kettle-scheduler-master_springmvc_kettlejava_kettleweb调度_kettle-

    2. **Web调度**:在Kettle中,Web调度意味着用户可以通过Web界面设置和管理调度任务,而无需直接在服务器上操作。这增强了系统的可访问性和易用性,使得非技术用户也能方便地管理数据集成流程。 3. **Spring MVC**...

    将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmvc+beetl_kettl

    将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmvc+beetl_kettle-manager

    kettle集成java+完整jar包

    在Java项目中集成Kettle,可以充分利用其丰富的数据转换和加载功能,提高数据处理的效率和灵活性。 1. **Kettle基础** - Kettle的核心是Job和Transformation。Job是任务流,用于组织一系列的Transformation和作业...

    基于web版kettle开发的一套分布式综合调度,管理,ETL开发的用户专业版BS架构工具.zip

    【标题】中的“基于Web版Kettle开发的一套分布式综合调度、管理、ETL开发的用户专业版BS架构工具”指的是使用Kettle(Pentaho Data Integration)进行ETL(提取、转换、加载)过程,并且是Web化的版本,便于在浏览器...

    springboot实现kettle

    SpringBoot实现Kettle是将流行的Java Web框架Spring Boot与数据集成工具Kettle(Pentaho Data Integration,简称PDI)相结合的技术实践。Spring Boot以其快速启动、自动化配置和丰富的生态系统,为开发人员提供了...

    KettleWeb-master.zip

    《KettleWeb与KettleSpoon在大数据处理中的应用详解》 KettleWeb与KettleSpoon是两款在大数据处理领域广泛应用的工具,它们都属于Pentaho Data Integration(简称Kettle)的一部分。Kettle是一款强大的ETL(Extract...

    Kettle Web版最新代码

    对于开发人员来说,通过分析和学习这个版本的源代码,可以了解到如何将Kettle的功能嵌入到Web应用中,如何进行分布式数据处理,以及如何利用Kettle的强大能力来解决实际的数据集成问题。同时,了解最新的开发实践和...

    SpringMVC精品资源--将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmv.zip

    本资源包“SpringMVC精品资源--将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmv.zip”显然是针对如何在SpringMVC项目中集成Kettle(Pentaho Data Integration,一个开源的数据集成工具)进行的...

Global site tag (gtag.js) - Google Analytics