After installing Jemboss the server will be running. Two scripts are created by the installation process; one to stop the server (tomstop) and another to start the server (tomstart). These scripts are created in the EMBOSS-x.y.z/jemboss/utils/ directory and may be copied to a more convenient place.
The tomstart script must be invoked by the unprivileged username that was used for installation of the server.
The server can, of course, be started at boot time either by creating appropriate operating system start/stop scripts or by invoking a line similar to the following at the end of the boot process:
/bin/su - jemboss -- /path/to/tomstartscript/tomstart > /dev/null 2>&1 |
where jemboss is the unprivileged username used for the installation.
Users of the server will be invoking the client software by clicking on a web page link at your site. You therefore need to create the web page using the instructions given below. Clicking on the link will invoke Java Web Start on the client. This will check that the client machine is using the latest version of the Jemboss software and download the client software if necessary; it will certainly download the client software on its first invocation.
For your convenience, the distribution provides a script to bundle all the java files, any SSL keystore files, the index.html file and the Jemboss.jnlp (Java Network Launching Protocol) file into one directory. It is recommended that you use the script.
The script is called makeJNLP.sh and must be run from the location where the server was installed and not from the source code directory. For example, if you installed Jemboss under /usr/local/emboss, as in the example above, then the script can be found in the directory /usr/local/emboss/share/EMBOSS/jemboss/utils/:
cd /usr/local/emboss/share/EMBOSS/jemboss/utils/ |
./makeJNLP.sh |
Here is an example session using makeJNLP.sh. The answers to the prompts reflect the Jemboss installation example used above.
*** Run this script from the installed jemboss utils directory. *** If you are using SSL the script will use the client.keystore *** in the $JEMBOSS/resources directory to create client.jar *** which is wrapped with the Jemboss client in Jemboss.jar. *** Press any key to continue.
After pressing [Return] the client.jar file will be created and you will get the following text and prompt.
Create client.jar to contain client.keystore.
The following information is used by keytool to
create a key store....
What is your first and last name [Unknown]?
Alan BleasbyYour response to the above should be quite straightforward however, as it may appear in certificate security messages (see later), you may wish to use a generic name such as 'EBI Jemboss'.
What is the name of your organisational unit [Unknown]?
EMBOSSYour organisational unit may be 'Systems' or 'Bioinformatics' or some such.
What is the name of your organisation [Unknown]?
EBIChange as appropriate.
What is the name of your City or Locality [Unknown]?
HinxtonChange as appropriate.
What is the name of your State or Province [Unknown]?
CambridgeshireChange as appropriate.
What is the two-letter country code for this unit [Unknown]?
UKChange as appropriate.
Give a key password (at least 6 characters):
helloworldThis is a password to protect the individual private keys of the public/private key pairs generated during the signing of the java files required by the client. A user of Jemboss doesn't need to know this and, frankly, neither do you really. Usual password rules should apply though i.e. the example password isn't a good one.
Give a store password (at least 6 characters):
helloworldThis is a password to ensure the integrity of the keystore which holds the private keys. Again, a user doesn't need to know this, and usual password rules should apply.
Provide the validity period for the signed jars, i.e. the
number of days before they expire and new ones need to be made [90]:
90The signed jar files only have a lifetime of a fixed number of days. This is a security measure. If you believe that 90 days is too short then you may increase this number. For example, as there's usually at least an annual release of EMBOSS you may wish to set the above value to 365 days.
The script has now gathered all the information it requires and the following messages will be displayed.
Each of the jar files will now be signed.... Signing axis.jar Warning: The signer certificate will expire within six months. Signing commons-discovery.jar [output truncated for clarity] Signing Jemboss.jar Warning: The signer certificate will expire within six months. *** The signed jar files, index.html and Jemboss.jnlp have been *** created in the directory /usr/local/emboss/share/EMBOSS/jemboss/jnlp. *** *** Please edit the 'codebase' line in Jemboss.jnlp. *** Also, edit the 'Click here' line in index.html to point *** href at Jemboss.jnlp. *** The 'jnlp' directory will then need to be added to your HTTP *** server configuration file or moved into the www data *** directories. *** *** For your http server to recognise the jnlp application, the *** following line needs to be added to the mime.types file: *** application/x-java-jnlp-file jnlp
The above text gives a short description of what steps you now need to take: here is a more full description. The makeJNLP.sh script will have created a new directory namely, using the above example, /usr/local/emboss/share/EMBOSS/jemboss/jnlp. This directory contains all the Jemboss files required by your HTTP server.
%lsaxis.jar Jemboss_logo_large.gif sjaxrpc.jar commons-discovery.jar JembossPrintAlignment.jar sJemboss.jar commons-logging.jar jembossstore sJembossPrintAlignment.jar grout.jar saaj.jar ssaaj.jar index.html saxis.jar swsdl4j.jar jakarta-regexp-1.2.jar scommons-discovery.jar wsdl4j.jar jalview.jar scommons-logging.jar jaxrpc.jar sgrout.jar Jemboss.jar sjakarta-regexp-1.2.jar Jemboss.jnlp sjalview.jar
First, edit the index.html file in the above directory. A little way down the file you'll find the following lines.
<b><font size=+1 color="#FF0000">Click here to <a href="http://localhost/Jemboss/Jemboss.jnlp"> LAUNCH JEMBOSS</a></font></b></li>
You should replace 'localhost' with the IP address of your server. In our example installation this becomes:
<b><font size=+1 color="#FF0000">Click here to <a href="http://192.168.8.11/Jemboss/Jemboss.jnlp"> LAUNCH JEMBOSS</a></font></b></li>
The location Jemboss will be created as an alias. This is explained shortly.
Secondly, you need to edit the Jemboss.jnlp file. Near the top of this file you will see the following lines.
spec="1.0+" codebase="http://EDIT" href="Jemboss.jnlp">
You need to edit the codebase line to point to the HTTP directory. For our example installation these become:
spec="1.0+" codebase="http://192.168.8.11/Jemboss/" href="Jemboss.jnlp" >
Thirdly, you need to add an alias called 'Jemboss' to your httpd server configuration file. For apache servers this file is usually .../conf/httpd.conf where the three dots refer to the path to the httpd configuration files - this differs from system to system. For example, under Fedora Linux, the file is located at /etc/httpd/conf/httpd.conf. Using the given installation example, you need to add the following line at the bottom of the file:
Alias Jemboss /usr/local/emboss/share/EMBOSS/jemboss/jnlp
This ensures that, when a user points his browser to http://yourserver/Jemboss, then he will be accessing the files in the above directory.
Finally, your httpd server may not know how to handle jnlp files correctly. Find the file mime.types associated with your httpd server. The location varies from system to system. For example, under Fedora Linux, the file is /etc/mime.types. Make sure that this file contains the following declaration:
application/x-java-jnlp-file jnlp
If there is a jnlp declaration in the mime.types file that looks different to the above then it is usually advisable to comment out that line and add the one given above.
After editing the file /etc/mime.types you should restart your httpd server for the changes to take effect.
Your Jemboss server is now ready to use.
For those interested in technical details, the following describes what the makeJNLP.sh command really does. The content of the jnlp is:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp
spec="1.0+"
codebase="jnlp_axis"
href="Jemboss.jnlp">
<information>
<offline-allowed />
</information>
<information>
<title>Jemboss</title>
<vendor>HGMP-RC</vendor>
<homepage href="/Jemboss/"/>
<description>Jemboss</description>
<description kind="short">User interface to EMBOSS.
</description>
<icon href="../Jemboss_logo_large.gif"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.3+"/>
<jar href="saxis.jar"/>
<jar href="scommons-logging.jar"/>
<jar href="scommons-discovery.jar"/>
<jar href="sJemboss.jar" main="true"/>
<jar href="sjakarta-regexp-1.2.jar"/>
<jar href="sjalview.jar" download="lazy"/>
<jar href="sJembossPrintAlignment.jar"/>
<jar href="sjcert.jar"/>
<jar href="sjnet.jar"/>
<jar href="sjsse.jar"/>
<jar href="ssaaj.jar"/>
</resources>
<application-desc main-class="org.emboss.jemboss.Jemboss"/>
</jnlp>As you can see, it mentions several jar files. Most of them are signed versions of jar files from other projects e.g. saxis.jar is the signed version of axis.jar and is used by the (s)Jemboss.jar file for SOAP procedures.
The script first makes the Jemboss.jar file, using the makeJar.csh script in the same directory. The Jemboss.jar file contains the Jemboss java class files, images and sundry files including the jemboss.properties file described later.
It then creates a keystore using a standard public/private encryption key methodology. The Java keytool command is used for this i.e.
keytool -genkey -alias signFiles -keypass |
Finally, jarsigner is used to sign all the jar files. The 's' prefix is used when the signed files are created e.g.
jarsigner -keystore jembossstore -signedjar sJemboss.jar Jemboss.jar signFiles |
Enter Passphrase for keystore:<yourKeyPass>Enter key password for signFiles:<yourStorePass>
One reason to bear these technical details in mind is that if, for whatever reason, you decide to edit the jemboss.properties file then you need to rerun the makeJNLP.sh procedure.