Welcome on the JMMC developper Corner 
This area is dedicated to: 
-  point to the technical ressources that are used by the JMMC technical team. 
-  list our tips, workarounds, usefull material.
Main documentation has been moved onto 
the github wiki of Jmcs 
 Shared Libraries 
 Jmal and Jmcs collections 
Jmcs and Jmal modules group a lot of external shared libraries. All collections of libs can be easily included in the distributed applications through their jnlp adding following code:
  <!-- JMMC libs -->
    <extension href="../JmcsLibs/JmcsLibs.jnlp"/>
    <extension href="../JmalLibs/JmalLibs.jnlp"/>
JmcsLibs.jnlp and 
JmalLibs.jnlp declare these ressources in the jnlp throug following code sample:
   <!-- Swing Task management -->
    <jar href="@SHARED@/swing-worker-1.2.jar"/>
The 
@SHARED
@ is replaced on fly by the admDeploy.sh script on top of a base url. 
Both jmcs and jmal jnlp can be shared between applications. Then no shared ressources must be removed without strong analysis. 
 Contrib jars of applications 
Applications based on external jars should declare them in their jnlp using the 
@SHARED
@ hack. By this way, the jar is copied on the server in one specific directory if it does not exist. Then the clients will download this resources only one time during successive versions.
 Jnlp 
The jar which contains the main class declared in the jnlp file must be declared as first jar ressource.
 Constraints on deployed jars 
To reach the maximum number of running platform, the distributed jars must not be signed more than once. Else error can appear arging that some parts are not signed by the same certificates.
This feature is performed during maven build.
 XML Schema rules : 
Here are several rules to help writing XML schemas :
First of all we define two different types of schemas.  
-  First we define “type schemas”, XSD documents containing only type definitions.  
-  For each object type(class) and value type we generate a corresponding complexType or simpleType, i.e. NOT ELEMENTS. 
-  Attributes map to elements of a corresponding data type (simple or complex), collections to elements of a type corresponding to the class. 
 
-  We next define a “document schema” containing root elements. The elements in the document schema define the valid XML documents one can write and we choose only the complex types representing an interesting document. That is, only important classes can be represented as a document. Fragments of these are not allowed.
If the data model is simple, it is possible to have a single XML schema gathering both type and document schemas. In this case, the XML schema must contain first the root elements and then the type definitions. 
Complete and detailed explanations 
here 
  
 External ressources 
 VO related 
 SAMP Simple Application Messaging Protocol 
 TAP 
To complete:  TAPlib , badcal, oidb...
 Usefull tools 
 Tips and tricks 
 Commit clean code with netbeans 
Netbeans provides in its Tool/Option Panel/Editor an "on save" tab where you can activate code cleanup function (organize imports, etc...)
 Get the status of running threads for any java program 
...if started from the command line: just get its pid and send one SIGQUIT signal :
 kill -3 <pid>