package openminer; import java.util.*; import java.sql.*; import java.net.*; import java.io.*; import org.jdom.*; import openminer.util.*; import openminer.util.db.*; public class OpenMiner { private Hashtable m_DBServerAccounts = null; private Hashtable m_UserAccountsTable = null; private Hashtable m_MinerThreadPoolsTable = null; private Listener m_Listener = null; private int m_ListenPort; private static String m_ModelTableFullName; public final static boolean TRACE_ENABLE = true; public static void main(String[] args) { OpenMiner server = new OpenMiner(); try{ // 开启服务 server.startService(); // 用户命令输入 server.commands(); }catch(Exception e){ e.printStackTrace(); } } /** * 开启openminer服务 * */ public void startService() throws Exception { System.out.println("OpenMiner Service Start..."); loadDBServerXmlFile("dbserver.xml"); loadPropertyXmlFile("property.xml"); createThreadPools(); startListener(); System.out.println("Service start sucessfully! "); } /** * 关闭openminer服务 * @throws Exception */ public void exitService() throws Exception { System.out.println("OpenMiner Service exit..."); m_Listener.stopListener(); releaseThreadPools(); System.out.println("Service exit sucessfully!"); System.exit(0); } /** * 服务端用户命令输入控制 * @throws Exception */ private void commands() throws Exception { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); while(true) { System.out.print(":>"); String cmd = br.readLine(); if(cmd.equals("exit")) { br.close(); isr.close(); exitService(); break; } else if(cmd.equals("startup")) { startService(); } else if(cmd.equals("restart")) { exitService(); startService(); } else { System.out.println("Unknown command: "+cmd); } } } /** * 装载数据库的配置文件 * @param fileName 数据库配置文件名 * @throws Exception */ private void loadDBServerXmlFile(String fileName) throws Exception { m_DBServerAccounts = new Hashtable(); Element dbserverElement = XMLFileLoader.loadXMLDOM(fileName); // 获取数据库名字 String dbName = dbserverElement.getAttributeValue("database"); // 获取模型Model保存的数据表 m_ModelTableFullName = dbserverElement.getAttributeValue("modeltable"); // 获取数据库驱动名字 String driverName = dbserverElement.getAttributeValue("driver"); // 装载数据库和驱动 loadDatabaseNameAndDrivers(dbName,driverName); // 装数据库用户帐号信息 List userList = dbserverElement.getChildren(); for(int i=0; i