Search in sources :

Example 1 with VCellServiceMXBeanImpl

use of cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl in project vcell by virtualcell.

the class DatabaseServer method main.

/**
 * Starts the application.
 * @param args an array of command-line arguments
 */
public static void main(java.lang.String[] args) {
    if (args.length < 1) {
        System.out.println("Missing arguments: " + DatabaseServer.class.getName() + " serviceOrdinal [logdir]");
        System.exit(1);
    }
    try {
        PropertyLoader.loadProperties();
        DatabasePolicySQL.lg.setLevel(Level.ALL);
        int serviceOrdinal = Integer.parseInt(args[0]);
        String logdir = null;
        if (args.length > 1) {
            logdir = args[1];
        }
        ServiceInstanceStatus serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.DB, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
        VCMongoMessage.serviceStartup(ServiceName.database, new Integer(serviceOrdinal), args);
        // 
        // JMX registration
        // 
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
        ConnectionFactory conFactory = DatabaseService.getInstance().createConnectionFactory();
        KeyFactory keyFactory = conFactory.getKeyFactory();
        DatabaseServerImpl databaseServerImpl = new DatabaseServerImpl(conFactory, keyFactory);
        VCMessagingService vcMessagingService = VCellServiceHelper.getInstance().loadService(VCMessagingService.class);
        vcMessagingService.setDelegate(new ServerMessagingDelegate());
        DatabaseServer databaseServer = new DatabaseServer(serviceInstanceStatus, databaseServerImpl, vcMessagingService, false);
        databaseServer.init();
    } catch (Throwable e) {
        e.printStackTrace(System.out);
    }
}
Also used : ServerMessagingDelegate(cbit.vcell.message.server.ServerMessagingDelegate) VCMessagingService(cbit.vcell.message.VCMessagingService) Date(java.util.Date) ObjectName(javax.management.ObjectName) ConnectionFactory(org.vcell.db.ConnectionFactory) VCellServiceMXBeanImpl(cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl) ServiceInstanceStatus(cbit.vcell.message.server.ServiceInstanceStatus) DatabaseServerImpl(cbit.vcell.modeldb.DatabaseServerImpl) KeyFactory(org.vcell.db.KeyFactory) MBeanServer(javax.management.MBeanServer)

Example 2 with VCellServiceMXBeanImpl

use of cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl in project vcell by virtualcell.

the class SimDataServer method main.

/**
 * Starts the application.
 * @param args an array of command-line arguments
 */
public static void main(java.lang.String[] args) {
    if (args.length < 1) {
        System.out.println("Missing arguments: " + SimDataServer.class.getName() + " serviceOrdinal [EXPORTONLY] [logdir]");
        System.exit(1);
    }
    try {
        PropertyLoader.loadProperties();
        int serviceOrdinal = Integer.parseInt(args[0]);
        String logdir = null;
        boolean bExportOnly = false;
        if (args.length > 1) {
            if (args[1].equalsIgnoreCase("EXPORTONLY")) {
                bExportOnly = true;
                VCMongoMessage.serviceStartup(ServiceName.export, new Integer(serviceOrdinal), args);
                if (args.length > 2) {
                    logdir = args[2];
                }
            } else {
                VCMongoMessage.serviceStartup(ServiceName.simData, new Integer(serviceOrdinal), args);
                logdir = args[1];
            }
        }
        ServiceInstanceStatus serviceInstanceStatus = null;
        ServiceName serviceName = null;
        if (bExportOnly) {
            serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.DATAEXPORT, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
            serviceName = ServiceName.export;
        } else {
            serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.DATA, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
            serviceName = ServiceName.simData;
        }
        VCMongoMessage.serviceStartup(serviceName, new Integer(serviceOrdinal), args);
        // 
        // JMX registration
        // 
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
        Cachetable cacheTable = new Cachetable(MessageConstants.MINUTE_IN_MS * 20);
        DataSetControllerImpl dataSetControllerImpl = new DataSetControllerImpl(cacheTable, new File(PropertyLoader.getRequiredProperty(PropertyLoader.primarySimDataDirInternalProperty)), new File(PropertyLoader.getRequiredProperty(PropertyLoader.secondarySimDataDirInternalProperty)));
        ExportServiceImpl exportServiceImpl = new ExportServiceImpl();
        DataServerImpl dataServerImpl = new DataServerImpl(dataSetControllerImpl, exportServiceImpl);
        VCMessagingService vcMessagingService = VCellServiceHelper.getInstance().loadService(VCMessagingService.class);
        vcMessagingService.setDelegate(new ServerMessagingDelegate());
        SimDataServer simDataServer = new SimDataServer(serviceInstanceStatus, dataServerImpl, vcMessagingService, false);
        // add dataJobListener
        dataSetControllerImpl.addDataJobListener(simDataServer);
        // add export listener
        exportServiceImpl.addExportListener(simDataServer);
        simDataServer.init();
    } catch (Throwable e) {
        e.printStackTrace(System.out);
    }
}
Also used : Cachetable(cbit.vcell.simdata.Cachetable) DataServerImpl(cbit.vcell.simdata.DataServerImpl) ServerMessagingDelegate(cbit.vcell.message.server.ServerMessagingDelegate) VCMessagingService(cbit.vcell.message.VCMessagingService) Date(java.util.Date) ObjectName(javax.management.ObjectName) ServiceName(cbit.vcell.mongodb.VCMongoMessage.ServiceName) VCellServiceMXBeanImpl(cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl) ServiceInstanceStatus(cbit.vcell.message.server.ServiceInstanceStatus) DataSetControllerImpl(cbit.vcell.simdata.DataSetControllerImpl) ExportServiceImpl(cbit.vcell.export.server.ExportServiceImpl) File(java.io.File) MBeanServer(javax.management.MBeanServer)

Example 3 with VCellServiceMXBeanImpl

use of cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl in project vcell by virtualcell.

the class SolverPostprocessor method main.

public static void main(java.lang.String[] args) {
    if (args.length < NUM_STD_ARGS) {
        System.out.println("Usage: " + SolverPostprocessor.class.getName() + " simKey username userKey jobindex taskid solverExitCode [postProcessorCommandFile]");
        System.exit(1);
    }
    Logging.init();
    Log4jSessionLog log = new Log4jSessionLog(LOG_NAME);
    Logger lg = log.getLogger();
    VCMessagingService vcMessagingService = null;
    try {
        PropertyLoader.loadProperties(POST_PROCESSOR_PROPERTIES);
        ResourceUtil.setNativeLibraryDirectory();
        NativeLoader.setOsType(OsType.LINUX);
        KeyValue simKey = new KeyValue(args[0]);
        String userName = args[1];
        KeyValue userKey = new KeyValue(args[2]);
        int jobIndex = Integer.parseInt(args[3]);
        int taskID = Integer.parseInt(args[4]);
        int solverExitCode = Integer.parseInt(args[5]);
        User owner = new User(userName, userKey);
        VCSimulationIdentifier vcSimID = new VCSimulationIdentifier(simKey, owner);
        String hostName = ManageUtils.getHostName();
        VCMongoMessage.serviceStartup(ServiceName.solverPostprocessor, Integer.valueOf(simKey.toString()), args);
        // 
        // JMX registration
        // 
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
        vcMessagingService = VCellServiceHelper.getInstance().loadService(VCMessagingService.class);
        vcMessagingService.setDelegate(new ServerMessagingDelegate());
        VCMessageSession session = vcMessagingService.createProducerSession();
        WorkerEventMessage workerEventMessage;
        if (solverExitCode == 0) {
            Exception postProcessingException = null;
            if (args.length > NUM_STD_ARGS) {
                String fname = args[NUM_STD_ARGS];
                if (lg.isDebugEnabled()) {
                    lg.debug("processing " + fname);
                }
                postProcessingException = runPostprocessingCommands(fname, lg);
            }
            if (lg.isDebugEnabled()) {
                lg.debug("postProcessingException is " + postProcessingException);
            }
            if (postProcessingException == null) {
                lg.debug("sendWorkerExitNormal");
                workerEventMessage = WorkerEventMessage.sendWorkerExitNormal(session, SolverPostprocessor.class.getName(), hostName, vcSimID, jobIndex, taskID, solverExitCode);
            } else {
                lg.debug("sendWorkerExitError postprocessing");
                workerEventMessage = WorkerEventMessage.sendWorkerExitError(session, postProcessingException, hostName, vcSimID, jobIndex, taskID, SimulationMessage.WorkerExited(postProcessingException));
            }
        } else {
            // solverExitCode != 0
            lg.debug("sendWorkerExitError solverExitCode");
            workerEventMessage = WorkerEventMessage.sendWorkerExitError(session, SolverPostprocessor.class.getName(), hostName, vcSimID, jobIndex, taskID, solverExitCode);
        }
        lg.debug(workerEventMessage);
        VCMongoMessage.sendWorkerEvent(workerEventMessage);
    } catch (Throwable e) {
        log.exception(e);
    } finally {
        if (vcMessagingService != null) {
            try {
                vcMessagingService.close();
            } catch (VCMessagingException e) {
                e.printStackTrace();
            }
        }
        ApplicationTerminator.beginCountdown(TimeUnit.SECONDS, 10, 0);
        VCMongoMessage.shutdown();
        System.exit(0);
    }
}
Also used : ServerMessagingDelegate(cbit.vcell.message.server.ServerMessagingDelegate) VCSimulationIdentifier(cbit.vcell.solver.VCSimulationIdentifier) KeyValue(org.vcell.util.document.KeyValue) User(org.vcell.util.document.User) Log4jSessionLog(org.vcell.util.logging.Log4jSessionLog) VCMessageSession(cbit.vcell.message.VCMessageSession) VCMessagingService(cbit.vcell.message.VCMessagingService) Logger(org.apache.log4j.Logger) VCMessagingException(cbit.vcell.message.VCMessagingException) ObjectName(javax.management.ObjectName) VCellServiceMXBeanImpl(cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl) VCMessagingException(cbit.vcell.message.VCMessagingException) WorkerEventMessage(cbit.vcell.message.messages.WorkerEventMessage) MBeanServer(javax.management.MBeanServer)

Example 4 with VCellServiceMXBeanImpl

use of cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl in project vcell by virtualcell.

the class SolverPreprocessor method main.

public static void main(java.lang.String[] args) {
    if (args.length < 2) {
        System.out.print(SolverPreprocessor.class.getName() + " ");
        System.out.println(Arrays.toString(args));
        System.out.println("Missing arguments: " + SolverPreprocessor.class.getName() + " [simulationTaskFile] [userdir] <parallel dir> ");
        System.exit(1);
    }
    File parallelDirectory = null;
    if (args.length >= 3) {
        parallelDirectory = new File(args[2]);
        if (!parallelDirectory.exists()) {
            parallelDirectory.mkdirs();
        }
        if (!parallelDirectory.isDirectory() || !parallelDirectory.canWrite()) {
            throw new IllegalArgumentException(parallelDirectory.getAbsolutePath() + " is not a writeable directory");
        }
    }
    Logging.init();
    try {
        PropertyLoader.loadProperties();
        // 
        File simulationFile = new File(args[0]);
        final SimulationTask simTask = XmlHelper.XMLToSimTask(FileUtils.readFileToString(simulationFile));
        if (parallelDirectory != null) {
            // simulation task needs to be written to the "parallel directory" (a temporary directory) here (it is local to the cluster).
            FileUtils.copyFile(simulationFile, new File(parallelDirectory, simulationFile.getName()));
        }
        File userDirectory = new File(args[1]);
        final String hostName = null;
        VCMongoMessage.serviceStartup(ServiceName.solverPreprocessor, Integer.valueOf(simTask.getSimKey().toString()), args);
        // 
        // JMX registration
        // 
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
        final HTCSolver htcSolver = new HTCSolver(simTask, userDirectory, parallelDirectory) {

            public void startSolver() {
                try {
                    super.initialize();
                } catch (Exception e) {
                    e.printStackTrace();
                    SimulationMessage simMessage = SimulationMessage.jobFailed(e.getMessage());
                    try {
                        sendFailureAndExit(this, simTask, hostName, simMessage);
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }
            }

            public void stopSolver() {
            }

            public double getCurrentTime() {
                return 0;
            }

            public double getProgress() {
                return 0;
            }
        };
        SolverListener solverListener = new SolverListener() {

            public void solverStopped(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
                try {
                    sendFailureAndExit(htcSolver, simTask, hostName, event.getSimulationMessage());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            public void solverStarting(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
            }

            public void solverProgress(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
            }

            public void solverPrinted(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
            }

            public void solverFinished(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
            }

            public void solverAborted(SolverEvent event) {
                VCMongoMessage.sendSolverEvent(event);
                try {
                    sendFailureAndExit(htcSolver, simTask, hostName, event.getSimulationMessage());
                } catch (VCMessagingException e) {
                    e.printStackTrace();
                }
            }
        };
        htcSolver.addSolverListener(solverListener);
        htcSolver.startSolver();
        VCMongoMessage.sendInfo("preprocessor done");
        exitWithCode(0);
    } catch (Throwable e) {
        lg.error(e.getMessage(), e);
        exitWithCode(-1);
    }
}
Also used : SimulationTask(cbit.vcell.messaging.server.SimulationTask) VCMessagingException(cbit.vcell.message.VCMessagingException) FileNotFoundException(java.io.FileNotFoundException) ObjectName(javax.management.ObjectName) SolverEvent(cbit.vcell.solver.server.SolverEvent) VCellServiceMXBeanImpl(cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl) SimulationMessage(cbit.vcell.solver.server.SimulationMessage) SolverListener(cbit.vcell.solver.server.SolverListener) VCMessagingException(cbit.vcell.message.VCMessagingException) File(java.io.File) HTCSolver(cbit.vcell.solvers.HTCSolver) MBeanServer(javax.management.MBeanServer)

Aggregations

VCellServiceMXBeanImpl (cbit.vcell.message.server.jmx.VCellServiceMXBeanImpl)4 MBeanServer (javax.management.MBeanServer)4 ObjectName (javax.management.ObjectName)4 VCMessagingService (cbit.vcell.message.VCMessagingService)3 ServerMessagingDelegate (cbit.vcell.message.server.ServerMessagingDelegate)3 VCMessagingException (cbit.vcell.message.VCMessagingException)2 ServiceInstanceStatus (cbit.vcell.message.server.ServiceInstanceStatus)2 File (java.io.File)2 Date (java.util.Date)2 ExportServiceImpl (cbit.vcell.export.server.ExportServiceImpl)1 VCMessageSession (cbit.vcell.message.VCMessageSession)1 WorkerEventMessage (cbit.vcell.message.messages.WorkerEventMessage)1 SimulationTask (cbit.vcell.messaging.server.SimulationTask)1 DatabaseServerImpl (cbit.vcell.modeldb.DatabaseServerImpl)1 ServiceName (cbit.vcell.mongodb.VCMongoMessage.ServiceName)1 Cachetable (cbit.vcell.simdata.Cachetable)1 DataServerImpl (cbit.vcell.simdata.DataServerImpl)1 DataSetControllerImpl (cbit.vcell.simdata.DataSetControllerImpl)1 VCSimulationIdentifier (cbit.vcell.solver.VCSimulationIdentifier)1 SimulationMessage (cbit.vcell.solver.server.SimulationMessage)1