formatting text
authorSasha <asherstnev@main-laptop2>
Fri, 19 Apr 2013 15:15:47 +0000 (16:15 +0100)
committerSasha <asherstnev@main-laptop2>
Fri, 19 Apr 2013 15:15:47 +0000 (16:15 +0100)
how_to_add_new_webservice.txt

index b0a1d1b..ae868fc 100644 (file)
@@ -1,42 +1,41 @@
-How To add a new executable\r
+How To add a new executable.\r
 \r
-1) Add executable to the binaries folder. If it has source code and can be \r
-recompiled for different platforms include it under binaries/src \r
-Edit binaries/src setexecutableflag.sh and compilebin.sh scripts accordingly. \r
+1) Add executable to the binaries folder. If it has source code and can be\r
+   recompiled for different platforms include it under binaries/src \r
+   Edit binaries/src setexecutableflag.sh and compilebin.sh scripts accordingly. \r
 \r
 2) Make sure all the dependencies of the software being installed are satisfied. \r
-If there are other binaries they should be included as well. Keep the dependant \r
-binaries in subfolder for the main executable. Update compile and setexecflag \r
-scripts accordingly. \r
+   If there are other binaries they should be included as well. Keep the dependant \r
+   binaries in subfolder for the main executable. Update compile and setexecflag \r
+   scripts accordingly. \r
 \r
-3) Make sure executable \r
-   - Does not have any hard links to its dependencies, e.g. is able to run from \r
-   any installation folder and does not contain any hard coded paths. \r
-   (TODO examples...) \r
+3) Make sure executable does not have any hard links to its dependencies, e.g. \r
+   is able to run from any installation folder and does not contain any hard \r
+   coded paths. (TODO examples...). \r
 \r
 4) Describe executable in conf/Exectuable.properties. The lowercase name of the \r
-wrapper should be included in the name of the property for example Clustal \r
-properties all include clustal as a part of the name e.g. local.clustalw.bin\r
-The same property for Mafft will be called local.mafft.bin. \r
+   wrapper should be included in the name of the property for example Clustal \r
+   properties all include clustal as a part of the name e.g. local.clustalw.bin \r
+   The same property for Mafft will be called local.mafft.bin. \r
 \r
 5) Add <ExecutableName>Limit.xml, <ExecutableName>Parameters.xml and \r
-<ExecutableName>Presets.xml. All are optional (should be at least). If the \r
-executable does not support parameters you do not have to refer to the \r
-XXXParameter.xml file into the Executable.properties file. The same is true for \r
-Presets and Limits. \r
+   <ExecutableName>Presets.xml. All are optional (should be at least). If the \r
+   executable does not support parameters you do not have to refer to the \r
+   XXXParameter.xml file into the Executable.properties file. The same is true \r
+   for Presets and Limits. \r
 \r
 6) Create a Java wrapper class for your executable. Create it within runner \r
-source directory. Examples of other wrappers can be found in compbio.runner.msa \r
-or compbio.runner.disorder packages. Wrapper should extend SkeletalExecutable<T> \r
-implements PipedExecutable<T> if you need to pass the input or collect the \r
-results from the standard in/out. Please see Mafft code as example. Wrapper \r
-should expend SkeletalExecutable<T> if input/output can be set as a parameter \r
-for an executable. Please see ClustalW code as example. \r
+   source directory. Examples of other wrappers can be found in compbio.runner.msa \r
+   or compbio.runner.disorder packages. Wrapper should extend SkeletalExecutable<T> \r
+   implements PipedExecutable<T> if you need to pass the input or collect the \r
+   results from the standard in/out. Please see Mafft code as example. Wrapper \r
+   should expend SkeletalExecutable<T> if input/output can be set as a parameter \r
+   for an executable. Please see ClustalW code as example. \r
 \r
 7) Create a testcase suit for your wrapper and run the test cases. \r
 \r
 8) Create parser for the output files of your executable. Suggested location \r
-compbio.data.sequence.SequenceUtil  \r
+   compbio.data.sequence.SequenceUtil \r
 \r
 9) Test the parser\r
 \r
@@ -46,37 +45,39 @@ compbio.data.sequence.SequenceUtil
     For multiple sequence alignment an Msa interface should be used. \r
 \r
 11) If you find a web interface that matches your returning data type, then \r
-implement a web service which confirms to it within a webservices source folder \r
+    implement a web service which confirms to it within a webservices source \r
+    folder. \r
 \r
 12) Register web service in WEB-INF/ web.xml and sun-jaxws.xml\r
 \r
 13) Add generated wsdl to wsbuild.xml ant script to generate the stubs\r
 \r
 14) Run build-server task in wsbuild file. Watch for errors. If the task fails \r
-that means that JAXB cannot serialize some of the data structures. Add \r
-appropriate annotations to your data types.\r
-Also check that \r
-  - you do not have interfaces to serialize. JAXB cannot serialize them.\r
-  - you have a default no args constructor (can be private if you do not need it)\r
-  - JAXB cannot serialize a Map, use custom data structure instead!\r
-  - Enum cannot be serialized as its abstract class (do not confuse with enum \r
-  which is fine)\r
-  - Fields serialization leave a little more space for manoeuvre, so use it. If \r
-  you do then you can accept and return interfaces, e.g. List, Map; abstract \r
-  classes etc, from your methods. \r
-  \r
-If you have the data on the server side, but nothing is coming through to the \r
-client, this is a JAXB serialization problem. They tend to be very silent and \r
-thus hard to debug. Check your data structure can be serialized! \r
-\r
-13) Modify the client to work with your new web service. Update Services \r
-enumeration to include new service and ensure that all the methods of this \r
-enumeration take into account the new service. In particular add the service to the \r
-compbio.ws.client.Services enumeration. Modify the getServiceImpl() and getServiceType()\r
-methods. Update the client help text (client_help.txt) and insert it into the Constraints class.   \r
-\r
-14) Test the web service with the client. \r
-\r
-15) Make sure the statistics collector works fine with a new web service. \r
-\r
-16) Test on the cluster...\r
+    that means that JAXB cannot serialize some of the data structures. Add \r
+    appropriate annotations to your data types.\r
+    Also check that: \r
+    - you do not have interfaces to serialize. JAXB cannot serialize them.\r
+    - you have a default no args constructor (can be private if you do not need it)\r
+    - JAXB cannot serialize a Map, use custom data structure instead!\r
+    - Enum cannot be serialized as its abstract class (do not confuse with enum \r
+      which is fine)\r
+    - Fields serialization leave a little more space for manoeuvre, so use it. If \r
+      you do then you can accept and return interfaces, e.g. List, Map; abstract \r
+      classes etc, from your methods. \r
+\r
+    If you have the data on the server side, but nothing is coming through to the \r
+    client, this is a JAXB serialization problem. They tend to be very silent and \r
+    thus hard to debug. Check your data structure can be serialized! \r
+\r
+15) Modify the client to work with your new web service. Update Services \r
+    enumeration to include new service and ensure that all the methods of this \r
+    enumeration take into account the new service. In particular add the service \r
+    to the compbio.ws.client.Services enumeration. Modify the getServiceImpl() and \r
+    getServiceType() methods. Update the client help text (client_help.txt) and \r
+    insert it into the Constraints class.   \r
+\r
+16) Test the web service with the client. \r
+\r
+17) Make sure the statistics collector works fine with a new web service. \r
+\r
+18) Test on the cluster...\r