我用的是domino7.0,成功连上了数据库,但是发现如果2个页面不停的运行这个JAVA代理,运行几十次后就会报错,然后服务器挡机, 搞得我郁闷无比..急求一个正确的解决方案.以下是我的连接测试代码:
import lotus.domino.*;
import java.sql.*;
import java.io.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
PrintWriter out=getAgentOutput();
Connection con=null;
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
//PrintStream ps=new PrintStream(new FileOutputStream(new File( "c:\\log.txt ")));
//System.setOut(ps);
System.out.println( "连接数据库正常 ");
// (Your code goes here)
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
String connQuery= "jdbc:microsoft:sqlserver://10.1.27.27:1433;DatabaseName=filebrowser ";
//String url = "jdbc:odbc:Driver={SQLServer};Server=sqlserver;uid=sa;pwd=sa;Database=filebrowser ";
con=DriverManager.getConnection(connQuery, "sa ", "sa ");
System.out.println( "连接数据库正常 ");
Thread.currentThread().sleep(800);
//然后创建一个JDBC声明
Statement stmt = con.createStatement();
//创建结果集
ResultSet rs = stmt.executeQuery( "Select * from userinfo ");
while(rs.next()){
System.out.println(rs.getString(2));
}
}
catch(Exception e) {
System.out.println( "here! ");
//System.out.println(e.getStackTrace());
e.printStackTrace();
}
finally{
try{
if(con!=null) con.close();
}
catch(Exception e){System.out.println( "clean up has problem! ");}
}
}
}
------解决方案--------------------
1、
加两句话
agentContext.recycle();
agentContext = null;
session.recycle();
session = null;
2、
ini文件中设置一个参数JavaMaxHeapSize , 67108864对应64M
256M或者更大,你自己看着写
没问题就结贴吧,呵呵
------解决方案--------------------
补充:
别用JDBC做,用jdbc:odbc桥来做,基本上没有问题的,否则
JavaMaxHeapSize 设置再大,也会宕机的,这种方法我做过很多项目了,一开始和你遇到的问题一样