datastage调度之java调度 欢迎加QQ群:106389516讨论
2012-10-02 10:34
435 查看
这几天看了datastage的调度,因为ds没有开放对java的接口去调用它,所以我们只能用java去调用dll的链接库,因为我刚接触对ds理解的也不是很深所以有的地方可能会说错,我现在想说说我的做法,说出来大家一起讨论一下对ds的调度,这里是一部分代码
import com.sun.jna.Library;
import com.sun.jna.Structure;
import com.sun.jna.Union;
import com.sun.jna.Native;
/** Simple example of native library declaration and usage. */
public class dsjobc {
public static class time_t extends Structure {
public int value;
public time_t() {}
public time_t(int value) {
this.value = value;
}
}
public static class DSPROJECT extends Structure{
public int dsapiVersionNo;
public int sessionId;
public byte valueMark;
public byte fieldMark;
}
public static class DSJOB extends Structure{
public DSPROJECT hProject; /* Reference to project handle for job */
String serverJobHandle; /* Text of handle to job on server */
String logData; /* Cached log summary data */
int logDataLen; /* Size of log summary data */
int logDataPsn; /* Current position in logData */
}
public static class DSparamValue extends Union{
String pString;
String pEncrypt;
int pInt;
float PFloat;
String pPath;
String pDate;
String pTime;
}
public static class DSPARAM extends Structure{
int paramType;
}
public interface libvmdsapi extends Library {
libvmdsapi INSTANCE = (libvmdsapi)Native.loadLibrary("vmdsapi",libvmdsapi.class);
public void DSSetServerParams( String ServerName, String UserName, String Password);
public DSPROJECT DSOpenProjectEx(int serial,String pro);
public DSJOB DSOpenJob(DSPROJECT pro,String job);
public int DSLockJob(DSJOB job);
public int DSRunJob(DSJOB job, int flag);
// public int DSGetJobInfo(DSJOB job, int flag, DSJOBINFO info);
public int DSSetParam(DSJOB job, String str, DSPARAM pam);
}
public static void main(String[] argv) {
DSPROJECT proj;
DSJOB dsjob;
// DSJOBINFO info;
libvmdsapi.INSTANCE.DSSetServerParams("193.158.163.243", "dsadm", "dsadmin");
proj=libvmdsapi.INSTANCE.DSOpenProjectEx(1,"B610_ODSB");
dsjob=libvmdsapi.INSTANCE.DSOpenJob(proj,"ss");
int lock= libvmdsapi.INSTANCE.DSLockJob(dsjob);
// int jofs= libvmdsapi.INSTANCE.DSGetJobInfo(dsjob,1,info);
// System.out.println("jofs:"+jofs);
System.out.println("lock:"+lock);
System.out.println("dsapiv:"+proj.dsapiVersionNo+"/ndsapi_sessionid:"+proj.sessionId);
System.out.println(dsjob.logData);
// System.out.println("jobname:"+info.info.jobName);
int runf = libvmdsapi.INSTANCE.DSRunJob(dsjob,1);
System.out.println("runflag:"+runf);
}
}
我贴出来,这个是可以运行的。这个是通过jna方式调用ds的。全部的代码和需要的jar包在http://download.csdn.net/detail/chen756430226/4600337 可以下载的到,这个是我自己写的一个初期的demo。我会将demo放在群共享里讨论。因为ds的服务器一般都是在Linux上的所以我们要是在远程运行的时候需要将ds的vmdsapi.dll类库拷贝到运行的本地。还有需要的其他两个dsclnt32.dll dsrpc32.dll 拷贝到自己本地。ds开发的帮助文档可以在http://download.csdn.net/my下载,我也会放在群共享里面。欢迎大家加入一起讨论。最后这里提出我的疑问来,在调度的时候我们会传参数到调度的job去这个怎么传呢?还有怎么获取日志信息呢?
import com.sun.jna.Library;
import com.sun.jna.Structure;
import com.sun.jna.Union;
import com.sun.jna.Native;
/** Simple example of native library declaration and usage. */
public class dsjobc {
public static class time_t extends Structure {
public int value;
public time_t() {}
public time_t(int value) {
this.value = value;
}
}
public static class DSPROJECT extends Structure{
public int dsapiVersionNo;
public int sessionId;
public byte valueMark;
public byte fieldMark;
}
public static class DSJOB extends Structure{
public DSPROJECT hProject; /* Reference to project handle for job */
String serverJobHandle; /* Text of handle to job on server */
String logData; /* Cached log summary data */
int logDataLen; /* Size of log summary data */
int logDataPsn; /* Current position in logData */
}
public static class DSparamValue extends Union{
String pString;
String pEncrypt;
int pInt;
float PFloat;
String pPath;
String pDate;
String pTime;
}
public static class DSPARAM extends Structure{
int paramType;
}
public interface libvmdsapi extends Library {
libvmdsapi INSTANCE = (libvmdsapi)Native.loadLibrary("vmdsapi",libvmdsapi.class);
public void DSSetServerParams( String ServerName, String UserName, String Password);
public DSPROJECT DSOpenProjectEx(int serial,String pro);
public DSJOB DSOpenJob(DSPROJECT pro,String job);
public int DSLockJob(DSJOB job);
public int DSRunJob(DSJOB job, int flag);
// public int DSGetJobInfo(DSJOB job, int flag, DSJOBINFO info);
public int DSSetParam(DSJOB job, String str, DSPARAM pam);
}
public static void main(String[] argv) {
DSPROJECT proj;
DSJOB dsjob;
// DSJOBINFO info;
libvmdsapi.INSTANCE.DSSetServerParams("193.158.163.243", "dsadm", "dsadmin");
proj=libvmdsapi.INSTANCE.DSOpenProjectEx(1,"B610_ODSB");
dsjob=libvmdsapi.INSTANCE.DSOpenJob(proj,"ss");
int lock= libvmdsapi.INSTANCE.DSLockJob(dsjob);
// int jofs= libvmdsapi.INSTANCE.DSGetJobInfo(dsjob,1,info);
// System.out.println("jofs:"+jofs);
System.out.println("lock:"+lock);
System.out.println("dsapiv:"+proj.dsapiVersionNo+"/ndsapi_sessionid:"+proj.sessionId);
System.out.println(dsjob.logData);
// System.out.println("jobname:"+info.info.jobName);
int runf = libvmdsapi.INSTANCE.DSRunJob(dsjob,1);
System.out.println("runflag:"+runf);
}
}
我贴出来,这个是可以运行的。这个是通过jna方式调用ds的。全部的代码和需要的jar包在http://download.csdn.net/detail/chen756430226/4600337 可以下载的到,这个是我自己写的一个初期的demo。我会将demo放在群共享里讨论。因为ds的服务器一般都是在Linux上的所以我们要是在远程运行的时候需要将ds的vmdsapi.dll类库拷贝到运行的本地。还有需要的其他两个dsclnt32.dll dsrpc32.dll 拷贝到自己本地。ds开发的帮助文档可以在http://download.csdn.net/my下载,我也会放在群共享里面。欢迎大家加入一起讨论。最后这里提出我的疑问来,在调度的时候我们会传参数到调度的job去这个怎么传呢?还有怎么获取日志信息呢?
相关文章推荐
- R语言 rvest爬取大众点评上海商场信息(R语言&大数据分析qq群 456726635 欢迎讨论交流)
- 欢迎加入Hello China技术讨论群组-QQ群:38467832
- R语言 堆叠可视化/可视化对比分析简单学习案例(R语言&大数据分析qq群 456726635 欢迎讨论交流)
- 在Java中,GB码和Unicode码的互转问题,欢迎讨论
- 从其他地方移来的Java面题,欢迎讨论……
- 欢迎加入Hello China技术讨论群组-QQ群:38467832
- java技术讨论QQ群号码:40820473
- 老紫竹JAVA的CSDN讨论QQ群长期招兵买马...
- 欢迎大象读者加入QQ群75809242讨论,感谢网友“网痞”建立“大象UML民间读者群”!
- java专区:QQ群 110662695 欢迎大家交流
- 欢迎大象读者加入QQ群75809242讨论,感谢网友“网痞”建立“大象UML民间读者群”!
- 技术讨论交流QQ群:15585961,欢迎大家加入
- sqoop 从mysql导入数据到HDFS(R语言&大数据分析qq群 456726635 欢迎讨论交流)
- 欢迎加入本人建的QQ群,讨论技术,生活及每天都有招聘信息
- R语言 shiny企业轻量级可视化应用案例(R语言&大数据分析qq群 456726635 欢迎讨论交流)
- 欢迎加入QQ群(63503492)讨论技术
- javaQQ群,欢迎你的加入
- 与小伙伴共勉的java有关jvm的知识(一),小鸟尽量写得详细哦,欢迎讨论,谢绝喷子
- 欢迎加入QQ群(63503492)讨论技术
- java 调度 datastage 之jna