private static void startup(String proprtiesFile) throws Exception{ InputStream in = new FileInputStream(new File(proprtiesFile)); if(p == null){ p = new Properties(); } p.load(in); try{ searchXMLFile(null); if(rmiServer.length() == 0){ searchXMLFile(".."); } if(rmiServer.length() == 0){ System.out.println("Can not found your, rmi-server.xml... "); System.exit(5); } System.out.println("config file: " + rmiServer); System.out.println("Start OTA Listener ..."); //MultiThreadServer.startListener(); Thread listenerThread = new Thread(new StartLitenerThread()); listenerThread.start(); //startListener(); otaRMIServ = getOtaRMIInstance(); topUpServ = getOtaTopUpInstance(); } private static void searchXMLFile(String path) throws Exception{ System.gc(); if(path == null || path.trim().length() == 0){ path="."; } File[] dir = new File (path).listFiles(); for(int i = 0; i < dir.length; i++){ if(dir[i].isDirectory()){ searchXMLFile(dir[i].getCanonicalPath()); }else{ if(dir[i].getCanonicalPath().indexOf(springPath) > 0 ){ rmiServer = dir[i].getCanonicalPath(); break; } } }// end for } private static String findPath() { File directory = new File(".");// get file's directory at harddisk String currentPath = null; try { currentPath = directory.getCanonicalPath();// get file's currentPath // at harddisk } catch (IOException e) { e.printStackTrace(); } return currentPath; } private static class getRMIFactory{ private static BeanFactory factory = null; private static BeanFactory topUpFactory = null; private static IOtaRMIService getOtaRMI(){ try { factory = new ClassPathXmlApplicationContext("file:"+findPath()+springfileName); otaRMIServ = (IOtaRMIService)factory.getBean(otaRmiServiceString); } catch (Exception e) { e.printStackTrace(); return null; } return otaRMIServ; } private static IOTAService getTopUpRMI(){ try { topUpFactory = new ClassPathXmlApplicationContext("file:"+findPath()+topUpSpringfileName); topUpServ = (IOTAService)topUpFactory.getBean(topUpRmiServiceString); } catch (Exception e) { e.printStackTrace(); } return topUpServ; } } private static void startupInlinux(String shFile) { try { // Process process = Runtime.getRuntime().exec("sh startup.sh &"); Process process = Runtime.getRuntime().exec(shFile); InputStreamReader ir = new InputStreamReader(process .getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; while ((line = input.readLine()) != null) System.out.println(line); input.close(); ir.close(); } catch (IOException e) { //log.error(e.getMessage()); } } private static void startInWindows(String batFile) throws IOException{ String[] cmd = new String[5]; cmd[0] = "cmd"; cmd[1] = "/c"; cmd[2] = "start"; cmd[3] = "set ROOTPATH=."; //cmd[4] = "OTA Listener Startup.bat"; cmd[4] = batFile; Runtime.getRuntime().exec(cmd); } static void startListener() throws IOException{ Properties pro = System.getProperties(); String osName = pro.getProperty("os.name"); System.out.println("osName="+osName); System.out.println(osName.indexOf("Windows", 0)); System.out.println(osName.indexOf("Linux", 0)); if(osName.indexOf("Windows", 0)!=-1){ startInWindows("OTA Listener Startup.bat"); } if(osName.indexOf("Linux", 0)!=-1){ startupInlinux(findPath()+"/OTAListenerStartup.sh"); } } public static void startOTAServer(){ try{ TopUpServerMain.startup(findPath()+"/jdbc.properties"); }catch(Exception e){ //r.logger.error( e ); e.printStackTrace(); } } public static void main(String[] args){ TopUpServerMain.startOTAServer(); } } class StartLitenerThread implements Runnable{ @Override public void run() { try { TopUpServerMain.startListener(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }