| Author |
Message |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/07/2010 17:59:45
|
John Hammonds
Joined: 12/12/2009 02:12:00
Messages: 16
Location: Argonne National Laboratory/USA
Offline
|
I have a user asking about running a the GDA server on a different machine than the client. What is the proper way to set this up? Is it possible to set up multiple servers for a single client?
|
John Hammonds
Software Services Group
Advanced Photon Source
Argonne National Laboratory |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/07/2010 09:59:45
|
Richard Woolliscroft
Joined: 09/12/2009 11:22:00
Messages: 11
Location: Diamond Light Source
Offline
|
Hi John,
That is the way we run things at Diamond. The way to do this is to change the jacorb.properties file located in your config/properties/etc folder.
Change the first property from localhost to the machine which will run the channel and event server processes. This tells all the different GDA processes which make up that beamline where to find the CORBA server.
You may then spread out the different processes on different machines and can run multiple Object Servers, on multiple machines if you wish.
The restrictions will be:
- you must run the channel server and event server on the same machine listed in the jacorb.properties file.
- you can run several ObjectServer processes, on different machines if required, but every object in those ObjectServers must have a unique name
- objects communicating with objects on different servers can only do so through methods in the interfaces (as it is the interfaces which are 'CORBA-ised', not concrete classes). The getAttribute/setAttribute methods are a way around this if required.
- you must run only one JythonServer object and this must be in the last ObjectServer process you start.
Richard
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/07/2010 16:34:09
|
John Hammonds
Joined: 12/12/2009 02:12:00
Messages: 16
Location: Argonne National Laboratory/USA
Offline
|
Richard,
I have also noticed that property
gda.localObjectsOnly
in config/properties/java.properties. Looking through the code it looks as if running without a server may be possible for debugging. We may have instances, since we did not start as a GDA shop, where we may want to use part of GDA (plotting for instance) on machines that handle scans and so forth with other means ( spec, sscan record). I am trying to gear up to test this. Does this work? How much is possible in this mode?
John
|
John Hammonds
Software Services Group
Advanced Photon Source
Argonne National Laboratory |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 26/07/2010 09:30:29
|
Richard Woolliscroft
Joined: 09/12/2009 11:22:00
Messages: 11
Location: Diamond Light Source
Offline
|
John,
Hmm. I've not considered this before, but it would be possible.
You would need to hook into those other scanning mechanisms and convert data from their scans into GDA ScanDataPoint objects. Those data points could then be broadcasted around GDA client classes in the usual GDA manner for plotting, or you could even use those ScanDataPoints in the GDA file writing mechanism...
Richard
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 26/07/2010 09:40:04
|
Richard Woolliscroft
Joined: 09/12/2009 11:22:00
Messages: 11
Location: Diamond Light Source
Offline
|
John,
I've just taken a quick look at the code - there are two methods for plotting - either create ScanDataPoints and broadcast them to GUI classes or a more direct approach would be to use the RCPPlotter class.
This class has static methods which take a String which is the name of the view you wish to plot to and agda.analysis.DataSet object. A DataSet is the basic underlying data structure used by the data analysis and plotting parts of the GDA.
Richard
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 26/07/2010 10:21:14
|
Richard Woolliscroft
Joined: 09/12/2009 11:22:00
Messages: 11
Location: Diamond Light Source
Offline
|
..although my last couple of comments are misleading. You could not start the current GDA client without a GDA server as that is a hardcoded behaviour - as if no Command Server was available we would want the users to know straight away and they could not do anything anyway.
However the views and perspectives used in the plotting mechanism could easily be placed in a different RCP product to run standalone from any GDA server.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/07/2010 13:44:32
|
matt.gerring
Joined: 11/02/2010 16:16:18
Messages: 15
Offline
|
Hello, Richard asked me to point out that we have a standalone tool in development and based on GDA at the ESRF.
It is open source and the first version will be released in September but also there is the source version on edna-site.org. I am currently updating the readme to say how to get started with it. Not sure how much of the data analysis parts of GDA to expose in the first version and would be willing to collaborate with anyone interested!!
Matt Gerring
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/07/2010 19:32:14
|
John Hammonds
Joined: 12/12/2009 02:12:00
Messages: 16
Location: Argonne National Laboratory/USA
Offline
|
Richard,
So, I had actually been working on an application which led me to question the standalone application before I started this line of questioning. I had an app where I created a DataSet and passed this off using RCPPlotter.imagePlot. I have really done nothing else yet (have not played around with initiallizing servers with gda.localObjectsOnly) and I get back the error:
org.omg.CORBA.TRANSIENT: Retries exceeded, couldn't reconnect to 127.0.0.1:6700 vmcid: 0x0 minor code: 0 completed: No
at org.jacorb.orb.iiop.ClientIIOPConnection.connect(Unknown Source)
at org.jacorb.orb.giop.GIOPConnection.write(Unknown Source)
at org.jacorb.orb.CDROutputStream.write(Unknown Source)
at org.jacorb.orb.giop.ServiceContextTransportingOutputStream.write_to(Unknown Source)
at org.jacorb.orb.giop.GIOPConnection.sendMessage(Unknown Source)
at org.jacorb.orb.giop.GIOPConnection.sendRequest(Unknown Source)
at org.jacorb.orb.giop.ClientConnection.sendRequest(Unknown Source)
at org.jacorb.orb.giop.ClientConnection.sendRequest(Unknown Source)
at org.jacorb.orb.Delegate.invoke_internal(Unknown Source)
at org.jacorb.orb.Delegate.invoke(Unknown Source)
at org.omg.CORBA.portable.ObjectImpl._invoke(Unknown Source)
at org.omg.CosNaming._NamingContextExtStub.resolve(Unknown Source)
at gda.factory.corba.util.NetService.retrieve(NetService.java:162)
at gda.factory.corba.util.NetService.reconnect(NetService.java:467)
at uk.ac.diamond.scisoft.analysis.plotserver.corba.impl.PlotserverAdapter.updateGui(PlotserverAdapter.java:140)
at gda.analysis.RCPPlotter.sendBeansToServer(RCPPlotter.java:795)
at gda.analysis.RCPPlotter.imagePlot(RCPPlotter.java:269)
at gda.analysis.RCPPlotter.imagePlot(RCPPlotter.java:220)
at gov.anl.aps.areadetector.imagewatcher.gdaimage.commands.SendImageToPlotView.execute(SendImageToPlotView.java:85)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
at gov.anl.aps.areadetector.imagewatcher.gdaimage.view.GdaImageWatcher$1$1.run(GdaImageWatcher.java:60)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3885)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3506)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at gda.rcp.Application.start(Application.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:36
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
If I do get the initialization done, does this mean that this should work?
|
John Hammonds
Software Services Group
Advanced Photon Source
Argonne National Laboratory |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/07/2010 14:49:40
|
Richard Woolliscroft
Joined: 09/12/2009 11:22:00
Messages: 11
Location: Diamond Light Source
Offline
|
John,
Yeah - that error comes from a client-side CORBA class failing to connect to a CORBA server.
If I run a GDA Client with no server running then I get a similar error. From your stack trace it looks like that the gda.analysis.RCPPlotter.sendBeansToServer() method is trying to broadcast over CORBA and failing to find the CORBA server process.
Richard
|
|
|
 |
|
|