CaGrid services
From Informatics
Contents |
Services built and running using caGrid:
- Anova
- Aracne
- Dispatcher
- HierarchicalClustering
- MarkUs
- Mindy
- MatrixREDUCE
- netboost
- SkyLine
- SomClustering
To determine if the grid version of a geworkbench component has been deployed for a particular version of geworkbench, see the corresponding release page and look at the list of included and excluded components. For example, a grid version of netboost exists, but is not deployed in GeWorkbench Release 1.7
Code
Code generation
We generate the template code from our Cagrid service model using introduce.
Please see Introduce#Generate_java_code
Code implementation
We implement our analysis in XxxImpl.java (assume Xxx is your analysis name)
For example, Anova, the algorithm is in AnovaImpl.java it implement the execute() method, and call the jarred version from client.
This XxxImpl.java will be run on grid servers, while XxxClient.java run on Dispatcher.
Call the jarred version from client
In order to only maintain one copy of source code for algorithm, we use the jar jarred from client side.
Put the jar in the lib of grid services, and call the algorithm in XxxImpl.java
Remote Exception Handling
Throw a RemoteException with message in it, our exception handling mechanizm will put into a queue and when user polling the result, we'll pass the exception to user as the result. Then, on client side (PollingThread.java), when it received a exception as a result, it will popup dialog box and show user the message in the exception.
logging
Use apache log, to log exceptions/errors/debug info.
Code modification
Please remember, even you only modify one line in the source code, to see the result of modification, you'll need to do the deploying process from scratch (including compiling, deploying, jar classes, put into dispatcher, deploy dispatcher).
Use this ant script would make you easier.
Exception/Tips: While debugging, you can use eclipse to start the tomcat for you in debug mode. And use eclipse's hotswap feature to modify the code on runtime if the code you modify doesn't introduce any new variables. In this case, no redeploying is necessary.
Deploy
see Production#Deploying_Services (probably should move to here)
Debug
see CaGrid Debugging