use of cbit.vcell.resource.LibraryLoaderThread in project vcell by virtualcell.
the class VCellClientTest method main.
/**
* Starts the application.
* @param args an array of command-line arguments
*/
public static void main(java.lang.String[] args) {
// class ParseVCellUserEvents implements Runnable {
// AWTEvent event;
// public ParseVCellUserEvents(AWTEvent event){
// this.event = event;
// }
// @Override
// public void run() {
// if(event instanceof MouseEvent){
// MouseEvent mouseEvent = (MouseEvent)event;
// Object details = null;
// if(mouseEvent.getID() == MouseEvent.MOUSE_RELEASED){
// if(mouseEvent.getComponent() instanceof JTable){
// JTable comp = (JTable)mouseEvent.getComponent();
// int[] selRows = comp.getSelectedRows();
// if(selRows != null && selRows.length > 0){
// StringBuffer sb = new StringBuffer();
// for (int i = 0; i < selRows.length; i++) {
// for (int j = 0; j < comp.getColumnCount(); j++) {
// try{
// sb.append((j==0?"":",")+comp.getColumnName(j)+"='"+comp.getModel().getValueAt(selRows[i], j)+"'");
// }catch(Exception e){
// e.printStackTrace();
// }
// }
// }
// details = sb.toString();
// }
// }else if(mouseEvent.getComponent() instanceof JTree){
// JTree comp = (JTree)mouseEvent.getComponent();
// TreePath treePath = comp.getSelectionPath();
// if(treePath != null){
// details = treePath.getLastPathComponent();
// // BioModel, MathModel, Geometry document tree selections
// if(details instanceof BioModelNode){
// //VCellBasicCellRenderer.VCDocumentInfoNode
// BioModelNode bioModelNode = (BioModelNode)details;
// boolean isVCDocumentInfo = bioModelNode.getUserObject() instanceof VCDocumentInfo;
// boolean isBioModelsNetModelInfo = bioModelNode.getUserObject() instanceof BioModelsNetModelInfo;
// if(!isVCDocumentInfo && bioModelNode.getChildCount() > 0 && bioModelNode.getUserObject() instanceof VCellBasicCellRenderer.VCDocumentInfoNode){
// TreeNode treeNode = bioModelNode.getFirstChild();
// if(treeNode instanceof BioModelNode && ((BioModelNode)treeNode).getUserObject() instanceof VCDocumentInfo){
// details = ((BioModelNode)treeNode).getUserObject();
// }
// }else if(isBioModelsNetModelInfo){
// details = BioModelsNetModelInfo.class.getSimpleName()+" '"+((BioModelsNetModelInfo)bioModelNode.getUserObject()).getName()+"'";
// }
// }
// }
// }else if(mouseEvent.getComponent() instanceof JTabbedPane){
// JTabbedPane comp = (JTabbedPane)mouseEvent.getComponent();
// details = "'"+comp.getTitleAt(comp.getSelectedIndex())+"'";
// }else if(mouseEvent.getComponent() instanceof JMenuItem){
// JMenuItem comp = (JMenuItem)mouseEvent.getComponent();
// details = "'"+comp.getText()+"'";
// }else if(mouseEvent.getComponent() instanceof AbstractButton){
// AbstractButton comp = (AbstractButton)mouseEvent.getComponent();
// Boolean bSelected = (comp instanceof JToggleButton?((JToggleButton)comp).isSelected():null);
// details = (bSelected != null?"("+(bSelected?"selected":"unselected")+")":"")+"'"+comp.getText()+"'";
// }else if(mouseEvent.getComponent() instanceof JComboBox<?>){
// JComboBox<?> comp = (JComboBox<?>)mouseEvent.getComponent();
// details = "'"+comp.getSelectedItem().toString()+"'";
// }else if(mouseEvent.getComponent() instanceof JList<?>){
// JList<?> comp = (JList<?>)mouseEvent.getComponent();
// details = "'"+comp.getSelectedValue()+"'";
// }else{
// details = "TBD "+mouseEvent.getComponent();
// }
// Component parentComponent = mouseEvent.getComponent();
// StringBuffer parentInfo = new StringBuffer();
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat(BeanUtils.vcDateFormat, Locale.US);
// do{
// String title="";
// if(parentComponent instanceof Dialog){
// title = ((Dialog)parentComponent).getTitle();
// }else if(parentComponent instanceof Frame){
// title = ((Frame)parentComponent).getTitle();
// }
// parentInfo.append(parentComponent.getClass().getTypeName()+"("+parentComponent.getName()+(title!=null&& title.length()>0?",title='"+title+"'":"")+")");
// if(parentComponent instanceof DocumentWindow && ((DocumentWindow)parentComponent).getTopLevelWindowManager() instanceof DocumentWindowManager){
// VCDocument vcDocument = ((DocumentWindowManager)((DocumentWindow)parentComponent).getTopLevelWindowManager()).getVCDocument();
// if(vcDocument != null){
// String date = (vcDocument.getVersion() != null && vcDocument.getVersion().getDate()!=null?simpleDateFormat.format(vcDocument.getVersion().getDate()):"nodate");
// parentInfo.append("doc="+vcDocument.getDocumentType()+" '"+vcDocument.getName()+"' "+date);
// }
// }
// parentInfo.append(" -> ");
// }while((parentComponent = parentComponent.getParent()) != null);
// //try to add event, if full remove an event from the top
// while(!recordedUserEvents.offer(mouseEvent.getClickCount()+" "+(details==null?"null":details.toString())+BeanUtils.PLAINTEXT_EMAIL_NEWLINE+parentInfo.toString())){
// recordedUserEvents.poll();
// }
// }
// }
// }
// };
//
//
// AWTEventListener awtEventListener = new AWTEventListener() {
// @Override
// public void eventDispatched(final AWTEvent event) {
// if(event instanceof MouseEvent){
// if(((MouseEvent)event).getID() == MouseEvent.MOUSE_RELEASED){
// new Thread(new ParseVCellUserEvents(event)).start();
// }
// }
// }
// };
// Toolkit.getDefaultToolkit().addAWTEventListener(awtEventListener,AWTEvent.MOUSE_EVENT_MASK);
new Thread(new Runnable() {
@Override
public void run() {
BeanUtils.updateDynamicClientProperties();
}
}).start();
// check synchronize Proxy prefs, Proxy Properties
Preferences prefs = Preferences.userNodeForPackage(RemoteProxyVCellConnectionFactory.class);
Boolean bHttp = (System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) == null && System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST) == null ? null : System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) != null);
String currentProxyHost = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST)));
String currentProxyPort = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_PORT) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_PORT)));
NetworkProxyUtils.setProxyProperties(false, null, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), currentProxyHost, currentProxyPort, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), prefs.get(NetworkProxyPreferences.prefProxyHost, NetworkProxyPreferences.prefProxyHost), prefs.get(NetworkProxyPreferences.prefProxyPort, NetworkProxyPreferences.prefProxyPort));
final boolean IS_DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
if (!IS_DEBUG) {
String siteName = VCellSoftwareVersion.fromSystemProperty().getSite().name().toLowerCase();
ConsoleCapture.getInstance().captureStandardOutAndError(new File(ResourceUtil.getLogDir(), "vcellrun_" + siteName + ".log"));
}
// Logging.init();
ErrorUtils.setDebug(IS_DEBUG);
if (args != null && args.length >= 1 && args[0].equals("-console")) {
// remove install4j parameter
List<String> newArgs = new ArrayList<String>();
newArgs.addAll(Arrays.asList(args));
newArgs.remove(0);
args = newArgs.toArray(new String[0]);
}
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < args.length; i++) {
stringBuffer.append("arg" + i + "=\"" + args[i] + "\" ");
}
System.out.println("starting with arguments [" + stringBuffer + "]");
System.out.println("Running under Java major version: ONE point " + ResourceUtil.getJavaVersion().toString() + ". Specifically: Java " + (System.getProperty("java.version")) + ", published by " + (System.getProperty("java.vendor")) + ", on the " + (System.getProperty("os.arch")) + " architecture running version " + (System.getProperty("os.version")) + " of the " + (System.getProperty("os.name")) + " operating system");
ClientServerInfo csInfo = null;
String hoststr = System.getProperty(PropertyLoader.vcellServerHost);
String[] hosts = null;
if (hoststr != null) {
StringTokenizer st = new StringTokenizer(hoststr, " ,;");
if (st.countTokens() >= 1) {
hosts = new String[st.countTokens()];
int count = 0;
while (st.hasMoreTokens()) {
hosts[count++] = st.nextToken();
}
}
}
if (hosts == null) {
hosts = new String[1];
}
String user = null;
String password = null;
VCDocument initialDocument = null;
if (args.length == 3) {
hosts[0] = args[0];
user = args[1];
password = args[2];
} else if (args.length == 0) {
// this is ok
} else if (args.length == 1) {
// Check if arg is drag-n-drop file or a 'hostname'
try {
// drag and drop file on install4j VCell launcher will pass filepath as single arg to VCell
File openThisVCellFile = new File(args[0]);
if (openThisVCellFile.exists() && openThisVCellFile.isFile()) {
initialDocument = startupWithOpen(args[0]);
}
} catch (Exception e) {
e.printStackTrace();
// continue to hostname check
}
// If startup file not exist assume arg is a hostname
if (initialDocument == null) {
hosts[0] = args[0];
}
// If install4j drag-n-drop, hosts[0] stays null and host is assumed to be loaded from a client property
} else if (args.length == 2 && args[0].equals("-open")) {
// hosts[0] = "-local";
initialDocument = startupWithOpen(args[1]);
} else {
System.out.println("usage: VCellClientTest ( ((-local|host[:port]) [userid password]) | ([-open] filename) )");
System.exit(1);
}
boolean bLocal = false;
if (hosts[0] != null && hosts[0].equalsIgnoreCase("-local")) {
bLocal = true;
}
if (bLocal) {
csInfo = ClientServerInfo.createLocalServerInfo(user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
} else {
String[] hostParts = hosts[0].split(":");
String apihost = hostParts[0];
int apiport = Integer.parseInt(hostParts[1]);
csInfo = ClientServerInfo.createRemoteServerInfo(apihost, apiport, user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
}
try {
if (bLocal) {
PropertyLoader.loadProperties(ArrayUtils.addAll(REQUIRED_CLIENT_PROPERTIES, REQUIRED_LOCAL_PROPERTIES));
try {
VCMongoMessage.enabled = true;
VCMongoMessage.serviceStartup(ServiceName.client, null, null);
PropertyLoader.sendErrorsToMongo();
} catch (Exception e) {
System.out.println("failed to start Mongo logging");
}
} else {
PropertyLoader.loadProperties(REQUIRED_CLIENT_PROPERTIES);
VCMongoMessage.enabled = false;
}
// call in main thread, since it's quick and not necessarily thread safe
ResourceUtil.setNativeLibraryDirectory();
vcellClient = VCellClient.startClient(initialDocument, csInfo);
// VCellClientDataService vcellClientDataService = new VCellClientDataServiceImpl(vcellClient);
// VCellProxyServer.startVCellVisitDataServerThread(vcellClientDataService);
// starting loading libraries
new LibraryLoaderThread(true).start();
try {
PythonSupport.verifyInstallation(PythonPackage.values());
} catch (Exception e) {
e.printStackTrace(System.out);
}
// SimulationService.Iface simService = new SimulationServiceImpl();
// VCellIJServer.startVCellVisitDataServerThread(simService, false);
} catch (Throwable exception) {
ErrorUtils.sendRemoteLogMessage(csInfo.getUserLoginInfo(), csInfo.toString() + "\nvcell startup failed\n\n" + exception.getMessage());
JOptionPane.showMessageDialog(null, exception.getMessage(), "Fatal Error", JOptionPane.OK_OPTION);
System.err.println("Exception occurred in main() of VCellApplication");
exception.printStackTrace(System.out);
}
}
use of cbit.vcell.resource.LibraryLoaderThread in project vcell by virtualcell.
the class VCellServices method main.
/**
* Starts the application.
* @param args an array of command-line arguments
*/
public static void main(java.lang.String[] args) {
OperatingSystemInfo.getInstance();
if (args.length != 3 && args.length != 0) {
System.out.println("Missing arguments: " + VCellServices.class.getName() + " [sshHost sshUser sshKeyFile] ");
System.exit(1);
}
try {
PropertyLoader.loadProperties(REQUIRED_SERVICE_PROPERTIES);
ResourceUtil.setNativeLibraryDirectory();
new LibraryLoaderThread(false).start();
PythonSupport.verifyInstallation(new PythonPackage[] { PythonPackage.VTK, PythonPackage.THRIFT });
HtcProxy htcProxy = SlurmProxy.creatCommandService(args);
int serviceOrdinal = 0;
VCMongoMessage.serviceStartup(ServiceName.dispatch, new Integer(serviceOrdinal), args);
// //
// // JMX registration
// //
// MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
// mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
ServiceInstanceStatus serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.MASTER, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
ConnectionFactory conFactory = DatabaseService.getInstance().createConnectionFactory();
KeyFactory keyFactory = conFactory.getKeyFactory();
DatabaseServerImpl databaseServerImpl = new DatabaseServerImpl(conFactory, keyFactory);
AdminDBTopLevel adminDbTopLevel = new AdminDBTopLevel(conFactory);
SimulationDatabase simulationDatabase = new SimulationDatabaseDirect(adminDbTopLevel, databaseServerImpl, true);
String cacheSize = PropertyLoader.getRequiredProperty(PropertyLoader.simdataCacheSizeProperty);
long maxMemSize = Long.parseLong(cacheSize);
Cachetable cacheTable = new Cachetable(MessageConstants.MINUTE_IN_MS * 20, maxMemSize);
DataSetControllerImpl dataSetControllerImpl = new DataSetControllerImpl(cacheTable, new File(PropertyLoader.getRequiredProperty(PropertyLoader.primarySimDataDirInternalProperty)), new File(PropertyLoader.getProperty(PropertyLoader.secondarySimDataDirInternalProperty, PropertyLoader.getRequiredProperty(PropertyLoader.primarySimDataDirInternalProperty))));
ExportServiceImpl exportServiceImpl = new ExportServiceImpl();
// add dataJobListener
DataServerImpl dataServerImpl = new DataServerImpl(dataSetControllerImpl, exportServiceImpl);
VCMessagingService vcMessagingService_int = new VCMessagingServiceActiveMQ();
String jmshost_int = PropertyLoader.getRequiredProperty(PropertyLoader.jmsIntHostInternal);
int jmsport_int = Integer.parseInt(PropertyLoader.getRequiredProperty(PropertyLoader.jmsIntPortInternal));
vcMessagingService_int.setConfiguration(new ServerMessagingDelegate(), jmshost_int, jmsport_int);
VCMessagingService vcMessagingService_sim = new VCMessagingServiceActiveMQ();
String jmshost_sim = PropertyLoader.getRequiredProperty(PropertyLoader.jmsSimHostInternal);
int jmsport_sim = Integer.parseInt(PropertyLoader.getRequiredProperty(PropertyLoader.jmsSimPortInternal));
vcMessagingService_sim.setConfiguration(new ServerMessagingDelegate(), jmshost_sim, jmsport_sim);
VCellServices vcellServices = new VCellServices(htcProxy, vcMessagingService_int, vcMessagingService_sim, serviceInstanceStatus, databaseServerImpl, dataServerImpl, simulationDatabase);
dataSetControllerImpl.addDataJobListener(vcellServices);
exportServiceImpl.addExportListener(vcellServices);
vcellServices.init();
} catch (Throwable e) {
e.printStackTrace(System.out);
}
}
use of cbit.vcell.resource.LibraryLoaderThread 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) {
OperatingSystemInfo.getInstance();
if (args.length != 1) {
System.out.println("Missing arguments: " + SimDataServer.class.getName() + " (CombinedData | ExportDataOnly | SimDataOnly)");
System.exit(1);
}
try {
PropertyLoader.loadProperties(REQUIRED_SERVICE_PROPERTIES);
ResourceUtil.setNativeLibraryDirectory();
new LibraryLoaderThread(false).start();
PythonSupport.verifyInstallation(new PythonPackage[] { PythonPackage.VTK, PythonPackage.THRIFT });
int serviceOrdinal = 99;
SimDataServiceType simDataServiceType = SimDataServiceType.valueOf(args[0]);
if (simDataServiceType == null) {
throw new RuntimeException("expecting argument (CombinedData | ExportDataOnly | SimDataOnly)");
}
final ServiceInstanceStatus serviceInstanceStatus;
final ServiceName serviceName;
switch(simDataServiceType) {
case ExportDataOnly:
{
serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.DATAEXPORT, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
serviceName = ServiceName.export;
break;
}
case SimDataOnly:
{
serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.DATA, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
serviceName = ServiceName.simData;
break;
}
case CombinedData:
{
serviceInstanceStatus = new ServiceInstanceStatus(VCellServerID.getSystemServerID(), ServiceType.COMBINEDDATA, serviceOrdinal, ManageUtils.getHostName(), new Date(), true);
serviceName = ServiceName.combinedData;
break;
}
default:
{
throw new RuntimeException("unexpected SimDataServiceType " + simDataServiceType);
}
}
VCMongoMessage.serviceStartup(serviceName, new Integer(serviceOrdinal), args);
// //
// // JMX registration
// //
// MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
// mbs.registerMBean(new VCellServiceMXBeanImpl(), new ObjectName(VCellServiceMXBean.jmxObjectName));
String cacheSize = PropertyLoader.getRequiredProperty(PropertyLoader.simdataCacheSizeProperty);
long maxMemSize = Long.parseLong(cacheSize);
Cachetable cacheTable = new Cachetable(MessageConstants.MINUTE_IN_MS * 20, maxMemSize);
DataSetControllerImpl dataSetControllerImpl = new DataSetControllerImpl(cacheTable, new File(PropertyLoader.getRequiredProperty(PropertyLoader.primarySimDataDirInternalProperty)), new File(PropertyLoader.getProperty(PropertyLoader.secondarySimDataDirInternalProperty, PropertyLoader.getRequiredProperty(PropertyLoader.primarySimDataDirInternalProperty))));
ExportServiceImpl exportServiceImpl = new ExportServiceImpl();
DataServerImpl dataServerImpl = new DataServerImpl(dataSetControllerImpl, exportServiceImpl);
VCMessagingService vcMessagingService = VCellServiceHelper.getInstance().loadService(VCMessagingService.class);
String jmshost = PropertyLoader.getRequiredProperty(PropertyLoader.jmsIntHostInternal);
int jmsport = Integer.parseInt(PropertyLoader.getRequiredProperty(PropertyLoader.jmsIntPortInternal));
vcMessagingService.setConfiguration(new ServerMessagingDelegate(), jmshost, jmsport);
SimDataServer simDataServer = new SimDataServer(serviceInstanceStatus, dataServerImpl, vcMessagingService, simDataServiceType, false);
// add dataJobListener
dataSetControllerImpl.addDataJobListener(simDataServer);
// add export listener
exportServiceImpl.addExportListener(simDataServer);
simDataServer.init();
} catch (Throwable e) {
lg.error("uncaught exception initializing SimDataServer: " + e.getLocalizedMessage(), e);
System.exit(1);
}
}
Aggregations