32f1154a965db636a8c5ed817dc73d739de5700f.svn-base
2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../temp1.css" type="text/css">
</head>
<body bgcolor=#ffffff vlink=#0000ff>
<div id="Tag1"/>
<br>
<font style='font-size:15pt'>7.Java开发</font><hr color=#2266ee size=1>
<br>
<b>1.原理</b><br>
Java 是以 JNI (Java Native Interface) 接口规范调用硕正服务的,Eclipse 的实例请参考下载 <a href='http://www.supcan.cn/download/JavaTest.zip'>JavaTest项目</a>。<br>
Java 对 winface.dll 的封装比较简单,包中的Service类就是接口的全部了:<br>
<pre class='cpp'>
package supcan;
public class Service {
static
{
System.loadLibrary("winface");
}
public native long OpenReportService(String para);
public native void CloseReportService(long h);
public native int GetActiveServices();
public native String func(long h, String funcname, String para);
}</pre>
<img src='glass.jpg'><font color="552222">受 JNI 规范制约,</font><font color="#ff0000">您不能修改包名 "supcan" 和类名 "Service"</font><font color="552222"> ,否则将无法运行;</font><br>
<br>
<b>2.实例</b><br>
项目包中的另一个类:RunDemo 类就是使用了 Service 类的例子,该例子仅是简单的 Java Application 应用,您可以先在此测试,测试通过后再将其改造成J2EE的后端项目。<br>
<pre class='cpp'>
public class RunDemo {
public static void main(String [] arg)
{
//创建参数=======================
//TempDir请自己指定一个
String Para = "TempDir=F:\\eclipse\\workspace\\JavaTest\\Temp;";
//相对路径的参考值
Para += "BaseDir=http://localhost:8080/supcan;";
//其它参数
Para += "LogSize=1000;LogLevel=2;";
//创建一个Service类的实例
Service srv = new Service();
//创建服务
long hSrv = srv.OpenReportService(Para);
if(hSrv==0){
System.out.println("报表服务创建失败!");
return;
}
//打开报表
srv.func(hSrv, "build", "report\\center2.xml");
//指定中心数据源的URL,参数是一个相对URL,相对于服务创建参数中的BaseDir,当然您也可以用绝对URL
srv.func(hSrv, "SetSource", "reportdata/datacenter.xml");
//计算、填充数据
srv.func(hSrv, "calc", "");
//创建临时文件
String TempFilename = srv.func(hSrv, "CacheDirUtility", "isCreateTempFile=true;ext=htm;DeleteEarlierFile=15m;KeepMB=10");
//报表转换成html
srv.func(hSrv, "callfunc", "105\r\n type=htm;filename=" + TempFilename);
//关闭服务
srv.CloseReportService(hSrv);
}
}</pre>
<br>
<b>3.部署</b><br>
在测试时,您可以将硕正服务专版包中的那些文件全部解压到JavaTest目录,就能运行:<br>
<center><img src="server5.jpg"></center><br>
在正式部署到服务器端时,则应该将这些文件部署到操作系统环境变量(path)能包含到的目录中.<br>
<br>
<br><br><br><br><br>
<script type='text/javascript' src='nstd.js'></script>
</body></html>