diff --git a/openbis/build/build.xml b/openbis/build/build.xml index f049f9a2b18813366a8eab47e6faa2ae5e0360d7..4d39d33704a5df274338e933c9d5f69e6afb19a6 100644 --- a/openbis/build/build.xml +++ b/openbis/build/build.xml @@ -202,23 +202,26 @@ <target name="make-dist" description="Makes a distribution file." depends="check-dictionary-syntax, clean, war, admin-console-dist, query-api-dist"> - <copy file="${lib}/tomcat5/apache-tomcat.zip" todir="${server.dist}" /> - <loadfile property="tomcat.version" srcFile="${lib}/tomcat5/version.txt"> + <copy file="${lib}/jetty7/jetty.zip" todir="${server.dist}" /> + <loadfile property="jetty.version" srcFile="${lib}/jetty7/version.txt"> <filterchain> <striplinebreaks /> </filterchain> </loadfile> - <echo file="${server.dist}/tomcat-version.txt">${tomcat.version}</echo> - <copy file="${original.openbis.server.dist}/server.xml" todir="${server.dist}" /> + <echo file="${server.dist}/jetty-version.txt">${jetty.version}</echo> + <copy file="${original.openbis.server.dist}/jetty.xml" todir="${server.dist}" /> <move file="${admin.dist.file}" todir="${server.dist}" /> <move file="${query.api.dist.file}" todir="${server.dist}" /> <copy file="${original.server.dist}/service.properties" todir="${server.dist}" /> <copy file="${original.server.dist}/openbis.conf" todir="${server.dist}" /> <copy file="${original.openbis.server.dist}/openBIS.keystore" todir="${server.dist}" /> <copy file="${original.openbis.server.dist}/passwd.sh" todir="${server.dist}" /> + <copy file="${original.openbis.server.dist}/setup-env" todir="${server.dist}" /> <property name="server.dist.file" value="${server.dist}${variant}-${version.number}-r${revision.number}.zip" /> <zip basedir="${dist}" destfile="${server.dist.file}" excludes="*.zip"> <zipfileset file="${original.openbis.server.dist}/install.sh" filemode="777" prefix="${server.folder.name}" /> + <zipfileset file="${original.openbis.server.dist}/startup.sh" filemode="777" prefix="${server.folder.name}" /> + <zipfileset file="${original.openbis.server.dist}/shutdown.sh" filemode="777" prefix="${server.folder.name}" /> </zip> <delete dir="${server.dist}" /> </target> diff --git a/openbis/dist/server/install.sh b/openbis/dist/server/install.sh index 855f02b37696d37a9c78f65e78cfdd77d3e0c26e..1ad3cedc1dc3a53414e863a85332b0acbaaaae2c 100755 --- a/openbis/dist/server/install.sh +++ b/openbis/dist/server/install.sh @@ -1,110 +1,100 @@ -#!/bin/bash +#! /bin/bash -nostartup=0 -if [[ "$1" = '-n' || "$1" = '--nostartup' ]]; then - nostartup=1 - shift -fi +usage() { + echo "Usage: $0 [--port <port number>] <server folder>" + exit 1 +} + +# Checks whether the number of arguments is smaller than one. +# We at least need the server folder. +check_arguments() { + if [ $# -lt 1 ]; then + usage + fi +} -if [ $# -lt 1 ]; then - echo "Usage: $0 [--nostartup] <server folder> [<service properties file> <startup properties file>]" - echo " --nostartup: do not start up tomcat automatically" - exit 1 +check_arguments $@ +JETTY_PORT=8443 +if [ $1 == "--port" ]; then + shift + check_arguments $@ + JETTY_PORT=$1 + shift fi +check_arguments $@ +# Installation folder: where the distribution zip file has been unzipped (and where this script resides) installation_folder="`dirname $0`" if [ ${installation_folder#/} == ${installation_folder} ]; then installation_folder="`pwd`/${installation_folder}" fi -server_folder="$1" -shift +# Where the server will be installed. +server_folder=$1 if [ ${server_folder#/} == ${server_folder} ]; then server_folder="`pwd`/${server_folder}" fi -properties_file="${installation_folder}/service.properties" -startup_properties_file="${installation_folder}/openbis.conf" -# Check whether given properties files exist and are regular file. -if [ "$1" -a "$2" ]; then - if [ ! -f "$1" ]; then - echo "Given properties file '$1' does not exist!" - exit 1 - fi - properties_file="$1" - shift - if [ "${properties_file#/}" == "${properties_file}" ]; then - properties_file="`pwd`/${properties_file}" - fi - if [ ! -f "$1" ]; then - echo "Given properties file '$1' does not exist!" - exit 1 - fi - startup_properties_file="$1" - shift - if [ "${startup_properties_file#/}" == "${startup_properties_file}" ]; then - startup_properties_file="`pwd`/${startup_properties_file}" - fi -fi +properties_file="$installation_folder/service.properties" +logconf_file="$installation_folder/log.xml" -rel_tomcat_folder="apache-tomcat-`cat \"${installation_folder}/tomcat-version.txt\"`" -tomcat_folder="${server_folder}/${rel_tomcat_folder}" -rel_openbis_web_folder=webapps/openbis -openbis_web_folder="${tomcat_folder}/${rel_openbis_web_folder}" -rel_openbis_web_inf=${rel_openbis_web_folder}/WEB-INF -openbis_web_inf="${tomcat_folder}/${rel_openbis_web_inf}" -startup_script_path="${tomcat_folder}/bin/startup.sh" +rel_jetty_folder="jetty-`cat $installation_folder/jetty-version.txt`" +jetty_folder="${server_folder}/${rel_jetty_folder}" # Creates server folder. -mkdir -p "${server_folder}" +mkdir -p "$server_folder" -# Checks whether a tomcat folder already exists. -if [ -d "${tomcat_folder}" ]; then - echo "There exists already a Tomcat folder." - echo "Please shutdown and remove this Tomcat installation" +# Checks whether a jetty folder already exists. +if [ -d $jetty_folder ]; then + echo "There exists already a Jetty folder." + echo "Please shutdown and remove this Jetty installation" echo "or choose another server folder." exit 1 fi -unzip -q "${installation_folder}/apache-tomcat.zip" -d "$server_folder" -cp -p "${installation_folder}"/openBIS.keystore "${tomcat_folder}" -cp -p "${installation_folder}/server.xml" "${tomcat_folder}/conf" -cp -p "${installation_folder}/passwd.sh" "${tomcat_folder}/bin" -chmod 755 "${tomcat_folder}/bin/passwd.sh" -STARTUP_TMP=`mktemp startup.sh.XXXXXX` -sed -e "33i\\ -source \${PRGDIR}/../etc/openbis.conf\\ -CATALINA_OPTS=\"\${JAVA_OPTS:=-server -Djavax.net.ssl.trustStore=openBIS.keystore} \${JAVA_MEM_OPTS:=-Xmx2048m -Xms512m -XX:MaxPermSize=256m} -Ddatabase.create-from-scratch=false -Ddatabase.script-single-step-mode=false\"\\ -export CATALINA_OPTS\\ -\\ -if [ \${PRGDIR#/} == \${PRGDIR} ]; then\\ - PRGDIR=\"\`pwd\`/\${PRGDIR}\"\\ -fi\\ -cd \"\${PRGDIR}/..\"\\ -" -e "s/\/bin\/sh/\/bin\/bash/" "${startup_script_path}" "${startup_script_path}" > ${STARTUP_TMP} -mv ${STARTUP_TMP} "${startup_script_path}" -chmod 744 "${tomcat_folder}"/bin/*.sh - -unzip -q "${installation_folder}/openBIS.war" -d "${openbis_web_folder}" -mkdir "${openbis_web_inf}/conf" - -# Copy configuration files - -mkdir "${tomcat_folder}/etc" -cp -p "${properties_file}" "${openbis_web_inf}/classes/service.properties" -echo Given properties file \'${properties_file}\' copied to \'${openbis_web_inf}/classes/service.properties\' -cp -p "${startup_properties_file}" "${tomcat_folder}/etc/" -echo Given properties file \'${startup_properties_file}\' copied to \'${tomcat_folder}/etc/\' - -# Create symlinks for easier access - -cd "${server_folder}" -ln -s "${rel_tomcat_folder}" apache-tomcat -cd "${tomcat_folder}" -ln -s "../${rel_openbis_web_inf}"/classes/service.properties etc/ -cp -p "${rel_openbis_web_inf}"/classes/etc/passwd etc/ - -if [ "$nostartup" -eq 0 ]; then - echo Starting tomcat... - bin/startup.sh -fi +echo Unzipping Jetty... +# Files are unzipped in $rel_jetty_folder +unzip -q "$installation_folder/jetty.zip" -d "$server_folder" +test -f "$installation_folder"/jetty.xml && cp -p "$installation_folder"/jetty.xml "$jetty_folder"/etc +test -f "$jetty_folder"/etc/keystore && rm "$jetty_folder"/etc/keystore +cp -p "$installation_folder"/openBIS.keystore "$jetty_folder"/etc + +echo Preparing and installing web archive... +war_file=openbis.war +war_classes=WEB-INF/classes +mkdir -p "$war_classes"/etc +# Replace 'service.properties' and 'log.xml' files in war +test -f "$properties_file" && cp -p "$properties_file" "$war_classes/" +test -f "$logconf_file" && cp -p "$logconf_file" "$war_classes/etc/" +zip "$installation_folder"/$war_file "$war_classes"/service.properties "$war_classes"/etc/log.xml *.js *.html images/* +#cp -p "$installation_folder"/$war_file "$jetty_folder"/webapps +cp -p "$installation_folder"/$war_file "$jetty_folder" +rm -rf WEB-INF + +# Create symlinks for easier access. +cd "$server_folder" +ln -s "${rel_jetty_folder}" jetty +cd jetty/etc +ln -s ../work/openbis/webapp/WEB-INF/classes/service.properties . +ln -s ../work/openbis/webapp/WEB-INF/classes/etc/log.xml . +ln -s ../bin/jetty.properties . +cd ../.. + +JETTY_BIN_DIR="$jetty_folder"/bin +cp -p "$installation_folder"/startup.sh "$JETTY_BIN_DIR" +cp -p "$installation_folder"/shutdown.sh "$JETTY_BIN_DIR" +cp -p "$installation_folder"/setup-env "$JETTY_BIN_DIR" + +# Create a file called 'jetty.properties'. +JETTY_PROPERTIES="$JETTY_BIN_DIR"/jetty.properties +cat "$installation_folder"/openbis.conf > "$JETTY_PROPERTIES" +echo "" >> "$JETTY_PROPERTIES" +echo "# Jetty options" >> "$JETTY_PROPERTIES" +echo "JETTY_PORT=$JETTY_PORT" >> "$JETTY_PROPERTIES" +echo "JETTY_STOP_PORT=8079" >> "$JETTY_PROPERTIES" +echo "JETTY_STOP_KEY=secret" >> "$JETTY_PROPERTIES" + +# Create a 'work' directory in jetty folder. Web applications will be unpacked there. +mkdir -p "$jetty_folder"/work + +cd "$jetty_folder" diff --git a/openbis/dist/server/jetty.xml b/openbis/dist/server/jetty.xml new file mode 100644 index 0000000000000000000000000000000000000000..7fe2fa0b88392bd52de79574733078e12f0cdb3a --- /dev/null +++ b/openbis/dist/server/jetty.xml @@ -0,0 +1,81 @@ +<?xml version="1.0"?> +<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> + +<Configure id="Server" class="org.eclipse.jetty.server.Server"> + + <Set name="ThreadPool"> + <!-- Default queued blocking threadpool --> + <New class="org.eclipse.jetty.util.thread.QueuedThreadPool"> + <Set name="minThreads">25</Set> + <Set name="maxThreads">250</Set> + </New> + </Set> + + <Call name="addConnector"> + <Arg> + <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> + <Set name="Port">8443</Set> + <Set name="maxIdleTime">30000</Set> + <Set name="Acceptors">2</Set> + <Set name="AcceptQueueSize">100</Set> + <Set name="Keystore"> + <SystemProperty name="jetty.home" default="." />/etc/openBIS.keystore + </Set> + <Set name="Password">changeit</Set> + <Set name="KeyPassword">changeit</Set> + </New> + </Arg> + </Call> + + <Set name="handler"> + <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> + <Set name="handlers"> + <Array type="org.eclipse.jetty.server.Handler"> + <Item> + <New class="org.eclipse.jetty.webapp.WebAppContext"> + <Set name="contextPath">/openbis</Set> + <Set name="war"> + <SystemProperty name="jetty.home" default="." />/openbis.war + </Set> + <Set name="tempDirectory"> + <SystemProperty name="jetty.home" default="." />/work/openbis + </Set> + </New> + </Item> + <Item> + <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> + </Item> + </Array> + </Set> + </New> + </Set> + + <Call name="addBean"> + <Arg> + <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager"> + <Set name="contexts"> + <Ref id="Contexts" /> + </Set> + <Call name="addAppProvider"> + <Arg> + <New class="org.eclipse.jetty.deploy.providers.WebAppProvider"> + <Set name="monitoredDir"><Property name="jetty.home" default="." />/webapps</Set> + <Set name="scanInterval">5</Set> + <Set name="extractWars">true</Set> + </New> + </Arg> + </Call> + </New> + </Arg> + </Call> + + <!-- =========================================================== --> + <!-- extra options --> + <!-- =========================================================== --> + + <Set name="stopAtShutdown">true</Set> + <Set name="sendServerVersion">true</Set> + <Set name="sendDateHeader">true</Set> + <Set name="gracefulShutdown">1000</Set> + +</Configure> diff --git a/openbis/dist/server/server.xml b/openbis/dist/server/server.xml deleted file mode 100644 index 509f421a5a5b3621010f155fc52b561f053e8f66..0000000000000000000000000000000000000000 --- a/openbis/dist/server/server.xml +++ /dev/null @@ -1,365 +0,0 @@ -<!-- Example Server Configuration File --> -<!-- Note that component elements are nested corresponding to their - parent-child relationships with each other --> - -<!-- A "Server" is a singleton element that represents the entire JVM, - which may contain one or more "Service" instances. The Server - listens for a shutdown command on the indicated port. - - Note: A "Server" is not itself a "Container", so you may not - define subcomponents such as "Valves" or "Loggers" at this level. - --> - -<Server port="8006" shutdown="SHUTDOWN"> - - <!-- Comment these entries out to disable JMX MBeans support used for the - administration web application --> - <Listener className="org.apache.catalina.core.AprLifecycleListener" /> - <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> - <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> - <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> - - <!-- Global JNDI resources --> - <GlobalNamingResources> - - <!-- Test entry for demonstration purposes --> - <Environment name="simpleValue" type="java.lang.Integer" value="30"/> - - <!-- Editable user database that can also be used by - UserDatabaseRealm to authenticate users --> - <Resource name="UserDatabase" auth="Container" - type="org.apache.catalina.UserDatabase" - description="User database that can be updated and saved" - factory="org.apache.catalina.users.MemoryUserDatabaseFactory" - pathname="conf/tomcat-users.xml" /> - - </GlobalNamingResources> - - <!-- A "Service" is a collection of one or more "Connectors" that share - a single "Container" (and therefore the web applications visible - within that Container). Normally, that Container is an "Engine", - but this is not required. - - Note: A "Service" is not itself a "Container", so you may not - define subcomponents such as "Valves" or "Loggers" at this level. - --> - - <!-- Define the Tomcat Stand-Alone Service --> - <Service name="Catalina"> - - <!-- A "Connector" represents an endpoint by which requests are received - and responses are returned. Each Connector passes requests on to the - associated "Container" (normally an Engine) for processing. - - By default, a non-SSL HTTP/1.1 Connector is established on port 8080. - You can also enable an SSL HTTP/1.1 Connector on port 8443 by - following the instructions below and uncommenting the second Connector - entry. SSL support requires the following steps (see the SSL Config - HOWTO in the Tomcat 5 documentation bundle for more detailed - instructions): - * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or - later, and put the JAR files into "$JAVA_HOME/jre/lib/ext". - * Execute: - %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows) - $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix) - with a password value of "changeit" for both the certificate and - the keystore itself. - - By default, DNS lookups are enabled when a web application calls - request.getRemoteHost(). This can have an adverse impact on - performance, so you can disable it by setting the - "enableLookups" attribute to "false". When DNS lookups are disabled, - request.getRemoteHost() will return the String version of the - IP address of the remote client. - --> - - <!-- Note : To disable connection timeouts, set connectionTimeout value - to 0 --> - - <!-- Note : To use gzip compression you could set the following properties : - - compression="on" - compressionMinSize="2048" - noCompressionUserAgents="gozilla, traviata" - compressableMimeType="text/html,text/xml" - --> - - <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> - <Connector port="8443" maxHttpHeaderSize="8192" - maxThreads="150" minSpareThreads="25" maxSpareThreads="75" - keystoreFile="openBIS.keystore" - enableLookups="false" disableUploadTimeout="true" - acceptCount="100" scheme="https" secure="true" - clientAuth="false" sslProtocol="TLS" - compression="on" compressableMimeType="text/html,text/xml,text/css,text/javascript"/> - - <!-- Define a Proxied HTTP/1.1 Connector on port 8082 --> - <!-- See proxy documentation for more information about using this. --> - <!-- - <Connector port="8082" - maxThreads="150" minSpareThreads="25" maxSpareThreads="75" - enableLookups="false" acceptCount="100" connectionTimeout="20000" - proxyPort="80" disableUploadTimeout="true" /> - --> - - <!-- An Engine represents the entry point (within Catalina) that processes - every request. The Engine implementation for Tomcat stand alone - analyzes the HTTP headers included with the request, and passes them - on to the appropriate Host (virtual host). --> - - <!-- You should set jvmRoute to support load-balancing via AJP ie : - <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"> - --> - - <!-- Define the top level container in our container hierarchy --> - <Engine name="Catalina" defaultHost="localhost"> - - <!-- The request dumper valve dumps useful debugging information about - the request headers and cookies that were received, and the response - headers and cookies that were sent, for all requests received by - this instance of Tomcat. If you care only about requests to a - particular virtual host, or a particular application, nest this - element inside the corresponding <Host> or <Context> entry instead. - - For a similar mechanism that is portable to all Servlet 2.4 - containers, check out the "RequestDumperFilter" Filter in the - example application (the source for this filter may be found in - "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters"). - - Note that this Valve uses the platform's default character encoding. - This may cause problems for developers in another encoding, e.g. - UTF-8. Use the RequestDumperFilter instead. - - Also note that enabling this Valve will write a ton of stuff to your - logs. They are likely to grow quite large. This extensive log writing - will definitely slow down your server. - - Request dumping is disabled by default. Uncomment the following - element to enable it. --> - <!-- - <Valve className="org.apache.catalina.valves.RequestDumperValve"/> - --> - - <!-- Because this Realm is here, an instance will be shared globally --> - - <!-- This Realm uses the UserDatabase configured in the global JNDI - resources under the key "UserDatabase". Any edits - that are performed against this UserDatabase are immediately - available for use by the Realm. --> - <Realm className="org.apache.catalina.realm.UserDatabaseRealm" - resourceName="UserDatabase"/> - - <!-- Comment out the old realm but leave here for now in case we - need to go back quickly --> - <!-- - <Realm className="org.apache.catalina.realm.MemoryRealm" /> - --> - - <!-- Replace the above Realm with one of the following to get a Realm - stored in a database and accessed via JDBC --> - - <!-- - <Realm className="org.apache.catalina.realm.JDBCRealm" - driverName="org.gjt.mm.mysql.Driver" - connectionURL="jdbc:mysql://localhost/authority" - connectionName="test" connectionPassword="test" - userTable="users" userNameCol="user_name" userCredCol="user_pass" - userRoleTable="user_roles" roleNameCol="role_name" /> - --> - - <!-- - <Realm className="org.apache.catalina.realm.JDBCRealm" - driverName="oracle.jdbc.driver.OracleDriver" - connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" - connectionName="scott" connectionPassword="tiger" - userTable="users" userNameCol="user_name" userCredCol="user_pass" - userRoleTable="user_roles" roleNameCol="role_name" /> - --> - - <!-- - <Realm className="org.apache.catalina.realm.JDBCRealm" - driverName="sun.jdbc.odbc.JdbcOdbcDriver" - connectionURL="jdbc:odbc:CATALINA" - userTable="users" userNameCol="user_name" userCredCol="user_pass" - userRoleTable="user_roles" roleNameCol="role_name" /> - --> - - <!-- Define the default virtual host - Note: XML Schema validation will not work with Xerces 2.2. - --> - <Host name="localhost" appBase="webapps" - unpackWARs="true" autoDeploy="true" - xmlValidation="false" xmlNamespaceAware="false"> - - <!-- Defines a cluster for this node, - By defining this element, means that every manager will be changed. - So when running a cluster, only make sure that you have webapps in there - that need to be clustered and remove the other ones. - A cluster has the following parameters: - - className = the fully qualified name of the cluster class - - clusterName = a descriptive name for your cluster, can be anything - - mcastAddr = the multicast address, has to be the same for all the nodes - - mcastPort = the multicast port, has to be the same for all the nodes - - mcastBindAddress = bind the multicast socket to a specific address - - mcastTTL = the multicast TTL if you want to limit your broadcast - - mcastSoTimeout = the multicast readtimeout - - mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat - - mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received - - tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes - - tcpListenAddress = the listen address (bind address) for TCP cluster request on this host, - in case of multiple ethernet cards. - auto means that address becomes - InetAddress.getLocalHost().getHostAddress() - - tcpListenPort = the tcp listen port - - tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS - has a wakup bug in java.nio. Set to 0 for no timeout - - printToScreen = true means that managers will also print to std.out - - expireSessionsOnShutdown = true means that - - useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called. - false means to replicate the session after each request. - false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager) - <% - HashMap map = (HashMap)session.getAttribute("map"); - map.put("key","value"); - %> - replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'. - * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication. - * Synchronous means that the thread that executes the request, is also the - thread the replicates the data to the other nodes, and will not return until all - nodes have received the information. - * Asynchronous means that there is a specific 'sender' thread for each cluster node, - so the request thread will queue the replication request into a "smart" queue, - and then return to the client. - The "smart" queue is a queue where when a session is added to the queue, and the same session - already exists in the queue from a previous request, that session will be replaced - in the queue instead of replicating two requests. This almost never happens, unless there is a - large network delay. - --> - <!-- - When configuring for clustering, you also add in a valve to catch all the requests - coming in, at the end of the request, the session may or may not be replicated. - A session is replicated if and only if all the conditions are met: - 1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND - 2. a session exists (has been created) - 3. the request is not trapped by the "filter" attribute - - The filter attribute is to filter out requests that could not modify the session, - hence we don't replicate the session after the end of this request. - The filter is negative, ie, anything you put in the filter, you mean to filter out, - ie, no replication will be done on requests that match one of the filters. - The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to. - - filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI - ending with .gif and .js are intercepted. - - The deployer element can be used to deploy apps cluster wide. - Currently the deployment only deploys/undeploys to working members in the cluster - so no WARs are copied upons startup of a broken node. - The deployer watches a directory (watchDir) for WAR files when watchEnabled="true" - When a new war file is added the war gets deployed to the local instance, - and then deployed to the other instances in the cluster. - When a war file is deleted from the watchDir the war is undeployed locally - and cluster wide - --> - - <!-- - <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" - managerClassName="org.apache.catalina.cluster.session.DeltaManager" - expireSessionsOnShutdown="false" - useDirtyFlag="true" - notifyListenersOnReplication="true"> - - <Membership - className="org.apache.catalina.cluster.mcast.McastService" - mcastAddr="228.0.0.4" - mcastPort="45564" - mcastFrequency="500" - mcastDropTime="3000"/> - - <Receiver - className="org.apache.catalina.cluster.tcp.ReplicationListener" - tcpListenAddress="auto" - tcpListenPort="4001" - tcpSelectorTimeout="100" - tcpThreadCount="6"/> - - <Sender - className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" - replicationMode="pooled" - ackTimeout="15000" - waitForAck="true"/> - - <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" - filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> - - <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" - tempDir="/tmp/war-temp/" - deployDir="/tmp/war-deploy/" - watchDir="/tmp/war-listen/" - watchEnabled="false"/> - - <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/> - </Cluster> - --> - - - - <!-- Normally, users must authenticate themselves to each web app - individually. Uncomment the following entry if you would like - a user to be authenticated the first time they encounter a - resource protected by a security constraint, and then have that - user identity maintained across *all* web applications contained - in this virtual host. --> - <!-- - <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> - --> - - <!-- Access log processes all requests for this virtual host. By - default, log files are created in the "logs" directory relative to - $CATALINA_HOME. If you wish, you can specify a different - directory with the "directory" attribute. Specify either a relative - (to $CATALINA_HOME) or absolute path to the desired directory. - --> - <!-- - <Valve className="org.apache.catalina.valves.AccessLogValve" - directory="logs" prefix="localhost_access_log." suffix=".txt" - pattern="common" resolveHosts="false"/> - --> - - <!-- Access log processes all requests for this virtual host. By - default, log files are created in the "logs" directory relative to - $CATALINA_HOME. If you wish, you can specify a different - directory with the "directory" attribute. Specify either a relative - (to $CATALINA_HOME) or absolute path to the desired directory. - This access log implementation is optimized for maximum performance, - but is hardcoded to support only the "common" and "combined" patterns. - --> - <!-- - <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" - directory="logs" prefix="localhost_access_log." suffix=".txt" - pattern="common" resolveHosts="false"/> - --> - - </Host> - - </Engine> - - </Service> - -</Server> diff --git a/openbis/dist/server/setup-env b/openbis/dist/server/setup-env new file mode 100644 index 0000000000000000000000000000000000000000..ed6da0033f48f58f999f2f4c2318da234e3beb1f --- /dev/null +++ b/openbis/dist/server/setup-env @@ -0,0 +1,15 @@ +# Load properties that become environment variables +# NOTE: it would be possible to specify a normal java properties file after the 'start.jar' + +JETTY_BIN_DIR=`dirname "$0"` +if [ ${JETTY_BIN_DIR#/} == ${JETTY_BIN_DIR} ]; then + JETTY_BIN_DIR="`pwd`/${JETTY_BIN_DIR}" +fi + +source "$JETTY_BIN_DIR"/jetty.properties +cd "$JETTY_BIN_DIR"/.. + +JVM=java +if [ -n "$JAVA_HOME" ]; then + JVM="$JAVA_HOME"/bin/java +fi diff --git a/openbis/dist/server/shutdown.sh b/openbis/dist/server/shutdown.sh new file mode 100755 index 0000000000000000000000000000000000000000..2ba1ea1084f92c4166a35529f77387d99892797f --- /dev/null +++ b/openbis/dist/server/shutdown.sh @@ -0,0 +1,8 @@ +#! /bin/bash + +source `dirname "$0"`/setup-env +$JVM -DSTOP.PORT=$JETTY_STOP_PORT \ + -DSTOP.KEY=$JETTY_STOP_KEY \ + -Djetty.port=$JETTY_PORT \ + $JAVA_OPTS $JAVA_MEM_OPTS \ + -jar start.jar --stop diff --git a/openbis/dist/server/startup.sh b/openbis/dist/server/startup.sh new file mode 100755 index 0000000000000000000000000000000000000000..696601e9af38508bc6aac68a8f838a450eddab37 --- /dev/null +++ b/openbis/dist/server/startup.sh @@ -0,0 +1,8 @@ +#! /bin/bash + +source `dirname "$0"`/setup-env +$JVM -DSTOP.PORT=$JETTY_STOP_PORT \ + -DSTOP.KEY=$JETTY_STOP_KEY \ + -Djetty.port=$JETTY_PORT \ + $JAVA_OPTS $JAVA_MEM_OPTS \ + -jar start.jar etc/jetty.xml >> logs/jetty.out 2>&1 &