7.Java开发

1.原理
  Java 是以 JNI (Java Native Interface) 接口规范调用硕正服务的,Eclipse 的实例请参考下载 JavaTest项目
  Java 对 winface.dll 的封装比较简单,包中的Service类就是接口的全部了:
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);
}
受 JNI 规范制约,您不能修改包名 "supcan" 和类名 "Service" ,否则将无法运行;

2.实例
  项目包中的另一个类:RunDemo 类就是使用了 Service 类的例子,该例子仅是简单的 Java Application 应用,您可以先在此测试,测试通过后再将其改造成J2EE的后端项目。
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);
 }
}

3.部署
  在测试时,您可以将硕正服务专版包中的那些文件全部解压到JavaTest目录,就能运行:

  在正式部署到服务器端时,则应该将这些文件部署到操作系统环境变量(path)能包含到的目录中.