我用:
soffice -headless -accept="socket,port=8100;urp;"
命令启动OpenOffice,然后在程序中
public void run() { // 创建Openoffice连接 OpenOfficeConnection con=null; long newsooc_s=System.currentTimeMillis(); con = new SocketOpenOfficeConnection(8100); try { // 连接 long con_s=System.currentTimeMillis(); con.connect(); long con_e=System.currentTimeMillis(); System.out.println(this.getName()+" "+con.isConnected()+"'con.connect: "+con_e+"-"+con_s+"=0."+(con_e-con_s)%1000+"秒"); } catch (Exception e) { System.out.println("获取OpenOffice连接失败..."); e.printStackTrace(); } // 创建转换器 DocumentConverter converter = new OpenOfficeDocumentConverter(con); // 转换文档html String fn = "E:/test_oo/Fintelligen_"+this.hashCode()+ ".html"; converter.convert(new File("E:/test_oo/Fintelligen.xls"), new File(fn)); long dc_e=System.currentTimeMillis(); System.out.println(this.getName()+"'converter.convert: "+dc_e+"-"+newsooc_s+"="+(dc_e-newsooc_s)/1000+"."+(dc_e-newsooc_s)%1000+"秒"); // 关闭openoffice连接 con.disconnect(); }
这样就会使后台的openoffice内存不断变大,好像链接没有释放。
请大虾解决一下内存问题。
[code="java"]public void run() {
// 创建Openoffice连接
OpenOfficeConnection con=null;
try {
long newsooc_s=System.currentTimeMillis();
con = new SocketOpenOfficeConnection(8100);
// 连接
long con_s=System.currentTimeMillis();
con.connect();
long con_e=System.currentTimeMillis();
System.out.println(this.getName()+" "+con.isConnected()+"'con.connect: "+con_e+"-"+con_s+"=0."+(con_e-con_s)%1000+"秒");
// 创建转换器
DocumentConverter converter = new OpenOfficeDocumentConverter(con);
// 转换文档html
String fn = "E:/test_oo/Fintelligen_"+this.hashCode()+ ".html";
converter.convert(new File("E:/test_oo/Fintelligen.xls"), new File(fn));
long dc_e=System.currentTimeMillis();
System.out.println(this.getName()+"'converter.convert: "+dc_e+"-"+newsooc_s+"="+(dc_e-newsooc_s)/1000+"."+(dc_e-newsooc_s)%1000+"秒");
} catch (Exception e) {
e.printStackTrace();
} finally{
// 关闭openoffice连接
if(con!=null)
con.disconnect();
}
}[/code]