From 00106ca3066baccfc08ff25bc7e593e399bb5f1c Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Fri, 27 Feb 2009 10:37:39 +0000 Subject: [PATCH] LMS-766 Create new openBIS distribution that installs 'out of the box' SVN: 10035 --- openbis/build/build.xml | 562 +++++++++--------- openbis/dist/etc/log.xml | 2 +- openbis/dist/server/install.sh | 162 +++-- openbis/dist/server/jetty.xml | 60 -- openbis/dist/server/passwd.sh | 2 +- openbis/dist/server/server.keystore | Bin 0 -> 2006 bytes openbis/dist/server/server.xml | 373 ++++++++++++ openbis/dist/server/service.properties | 44 ++ openbis/dist/server/shutdown.sh | 16 - openbis/dist/server/startup.sh | 20 - openbis/etc/log_system_test.xml | 2 +- openbis/resource/server/web.xml | 2 +- .../client/application/GenericConstants.java | 2 +- .../server/CommonClientServiceServlet.java | 2 +- .../web/server/FileExportServiceServlet.java | 2 +- .../web/server/UploadServiceServlet.java | 4 +- .../generic/server/ETLServiceServer.java | 2 +- .../ExperimentAttachmentDownloadServlet.java | 2 +- .../server/GenericClientServiceServlet.java | 4 +- .../server/ScreeningClientServiceServlet.java | 2 +- openbis_all/source/bash/sprint_install.sh | 9 - 21 files changed, 771 insertions(+), 503 deletions(-) delete mode 100644 openbis/dist/server/jetty.xml create mode 100644 openbis/dist/server/server.keystore create mode 100644 openbis/dist/server/server.xml create mode 100644 openbis/dist/server/service.properties delete mode 100755 openbis/dist/server/shutdown.sh delete mode 100755 openbis/dist/server/startup.sh diff --git a/openbis/build/build.xml b/openbis/build/build.xml index b94a1eadb89..9d9c7ce7ffa 100644 --- a/openbis/build/build.xml +++ b/openbis/build/build.xml @@ -1,348 +1,332 @@ <project name="openbis" basedir=".."> - <import file="../../server-common/build/build-common.xml" /> - <project-classpath name="ecp" classes="${classes}" /> + <import file="../../server-common/build/build-common.xml" /> + <project-classpath name="ecp" classes="${classes}" /> - <property name="mainfolder" value="openbis" /> + <property name="mainfolder" value="openbis" /> - <property name="gwt.lib" value="${lib}/gwt1.5" /> - <property name="gwt.dev.lib" value="${gwt.lib}/mac/gwt-dev-mac.jar" /> - <property name="gwt.user.lib" value="${gwt.lib}/gwt-user.jar" /> - <property name="gwt.tomcat.web-inf" + <property name="gwt.lib" value="${lib}/gwt1.5" /> + <property name="gwt.dev.lib" value="${gwt.lib}/mac/gwt-dev-mac.jar" /> + <property name="gwt.user.lib" value="${gwt.lib}/gwt-user.jar" /> + <property name="gwt.tomcat.web-inf" value="../${ant.project.name}/tomcat/webapps/ROOT/WEB-INF" /> - <property name="application.server.resource" + <property name="original.server.dist" value="${original.dist}/server" /> + <property name="server.folder.name" value="openBIS-server" /> + <property name="server.dist" value="${dist}/${server.folder.name}" /> + <property name="server.jar.file.name" value="openBIS.jar" /> + <property name="server.jar.file" value="${server.dist}/${server.jar.file.name}" /> + <property name="server.webapp.file" value="${server.dist}/openBIS.war" /> + <property name="server.service" value="${server.dist}/service" /> + <property name="server.service.lib" value="${server.service}/lib" /> + <property name="application.server.resource" value="../${ant.project.name}/${server-resource}" /> - <property name="webapp.dist" value="${dist}/webapp" /> - <property name="webapp.dist.web-inf" value="${webapp.dist}/WEB-INF" /> + <property name="webapp.dist" value="${dist}/webapp" /> + <property name="webapp.dist.web-inf" value="${webapp.dist}/WEB-INF" /> - <property name="jar.file.name" value="${ant.project.name}.jar" /> - <property name="jar.file" value="${dist}/${jar.file.name}" /> + <property name="jar.file.name" value="${ant.project.name}.jar" /> + <property name="jar.file" value="${dist}/${jar.file.name}" /> - <property name="webapp.file.name" value="generic${ant.project.name}.war" /> - <property name="webapp.file" value="${dist}/${webapp.file.name}" /> + <property name="webapp.file.name" value="${ant.project.name}.war" /> + <property name="webapp.file" value="${server.dist}/${webapp.file.name}" /> - <!-- + <!-- // Cleans distribution directory. --> - <target name="clean" description="Cleans distribution directory."> - <delete dir="${dist}" failonerror="true" /> - <mkdir dir="${dist}" /> - </target> + <target name="clean" description="Cleans distribution directory."> + <delete dir="${dist}" failonerror="true" /> + <mkdir dir="${dist}" /> + </target> - <!-- + <!-- // Runs tests. --> - <target name="run-tests"> - <antcall target="build-common.run-tests"> - <param name="test.suite" value="tests.xml" /> - </antcall> - </target> + <target name="run-tests"> + <antcall target="build-common.run-tests"> + <param name="test.suite" value="tests.xml" /> + </antcall> + </target> - <!-- + <!-- // Runs system tests (only on Linux) --> - <target name="run-system-tests" depends="prepare-gwt, compile-tests"> - <delete dir="${output.test}" /> - <mkdir dir="${output.test}" /> - <junit dir="." fork="true" forkmode="once" maxmemory="512m" showoutput="true" failureproperty="tests-failed"> - <classpath> - <pathelement location="${sources}" /> - <pathelement location="${sources.test}" /> - <pathelement path="${ecp}" /> - <pathelement location="${gwt.lib}/linux/gwt-dev-linux.jar" /> - </classpath> - <jvmarg value="-ea" /> - <sysproperty key="authentication-service" value="file-authentication-service" /> - <sysproperty key="log4j.configuration" value="etc/log.xml" /> - <sysproperty key="database.create-from-scratch" value="true" /> - <sysproperty key="hibernate.search.index-base" value="sourceTest/lucene/indices" /> - <sysproperty key="hibernate.search.index-mode" value="NO_INDEX" /> - <sysproperty key="database.kind" value="system_test" /> - <sysproperty key="script-folder" value="sourceTest" /> - <sysproperty key="mass-upload-folder" value="sourceTest/sql/postgresql" /> - <formatter type="xml" /> - <test name="ch.systemsx.cisd.openbis.generic.SystemTestSuite" todir="${output.test}" /> - </junit> - <fail> - <condition><isset property="tests-failed"/></condition> - </fail> + <target name="run-system-tests" depends="prepare-gwt, compile-tests"> + <delete dir="${output.test}" /> + <mkdir dir="${output.test}" /> + <junit dir="." fork="true" forkmode="once" maxmemory="512m" showoutput="true" failureproperty="tests-failed"> + <classpath> + <pathelement location="${sources}" /> + <pathelement location="${sources.test}" /> + <pathelement path="${ecp}" /> + <pathelement location="${gwt.lib}/linux/gwt-dev-linux.jar" /> + </classpath> + <jvmarg value="-ea" /> + <sysproperty key="authentication-service" value="file-authentication-service" /> + <sysproperty key="log4j.configuration" value="etc/log.xml" /> + <sysproperty key="database.create-from-scratch" value="true" /> + <sysproperty key="hibernate.search.index-base" value="sourceTest/lucene/indices" /> + <sysproperty key="hibernate.search.index-mode" value="NO_INDEX" /> + <sysproperty key="database.kind" value="system_test" /> + <sysproperty key="script-folder" value="sourceTest" /> + <sysproperty key="mass-upload-folder" value="sourceTest/sql/postgresql" /> + <formatter type="xml" /> + <test name="ch.systemsx.cisd.openbis.generic.SystemTestSuite" todir="${output.test}" /> + </junit> + <fail> + <condition> + <isset property="tests-failed"/> + </condition> + </fail> - </target> + </target> - <!-- + <!-- // Makes a distribution file. --> - <target name="dist" description="Makes a distribution file." depends="clean, war"> - <property name="dist.file.name" - value="${ant.project.name}-${version.number}-r${revision.number}.zip" /> - <property name="jetty.path" value="${lib}/jetty" /> - <property name="zipped.dir" value="${dist}/${ant.project.name}" /> + <target name="dist" description="Makes a distribution file." depends="clean, war"> + <copy file="${lib}/tomcat5/apache-tomcat.zip" todir="${server.dist}" /> + <loadfile property="tomcat.version" srcFile="${lib}/tomcat5/version.txt"> + <filterchain> + <striplinebreaks /> + </filterchain> + </loadfile> + <echo file="${server.dist}/tomcat-version.txt">${tomcat.version}</echo> + <copy file="${original.server.dist}/server.xml" todir="${server.dist}" /> + <copy file="${original.server.dist}/service.properties" todir="${server.dist}" /> + <copy file="${original.server.dist}/server.keystore" todir="${server.dist}" /> + <copy file="${original.server.dist}/passwd.sh" todir="${server.dist}" /> + <property name="server.dist.file" value="${server.dist}-${version.number}-r${revision.number}.zip" /> + <zip basedir="${dist}" destfile="${server.dist.file}" excludes="*.zip"> + <zipfileset file="${original.server.dist}/install.sh" filemode="777" prefix="${server.folder.name}" /> + </zip> + <delete dir="${server.dist}" /> + </target> - <mkdir dir="${zipped.dir}" /> - <move file="${webapp.file}" todir="${zipped.dir}" /> - - <copy file="${jetty.path}/jetty.zip" todir="${zipped.dir}" /> - <copy file="${jetty.path}/version.txt" tofile="${zipped.dir}/jetty-version.txt"> - <filterchain> - <striplinebreaks /> - </filterchain> - </copy> - <!-- - // Although there is already one 'service.properties' and 'log.xml' in the war, we need one here that - // can be configured by the administrator. The idea is to replace the one in the war with it in the - // 'install.sh' script. - --> - <copy todir="${zipped.dir}"> - <fileset dir="${original.dist}/etc"> - <include name="*" /> - </fileset> - </copy> - <!-- Copy all files but '*.sh'. --> - <copy todir="${zipped.dir}"> - <fileset dir="${original.dist.server}"> - <exclude name="*.sh" /> - </fileset> - </copy> - - <zip basedir="${dist}" destfile="${dist}/${dist.file.name}"> - <zipfileset file="${original.dist.server}/*.sh" - filemode="755" - prefix="${ant.project.name}" /> - </zip> - - <!-- Does some cleaning. --> - <delete failonerror="true" includeemptydirs="true"> - <fileset dir="${dist}"> - <exclude name="${dist.file.name}" /> - </fileset> - </delete> - </target> - - <!-- + <!-- // Task for continuous integration server. --> - <target name="ci" + <target name="ci" depends="build-common.ci, check-dependencies, dist" description="Task for continuous integration server." /> - <!-- + <!-- // Nightly build task for continuous integration server. --> - <target name="nightly-build" + <target name="nightly-build" depends="build-common.ci, run-system-tests, dist" description="Nightly build task for continuous integration server." /> - <!-- + <!-- // Compiles the javascript using GWT compiler. --> - <target name="compile-javascript" depends="prepare-web-client" description="Compiles the javascript using GWT compiler."> - <property name="application.gwt.path" value="ch.systemsx.cisd.openbis.OpenBIS" /> - <delete dir="${webapp.dist}" /> - <java classpath="${ecp}:${gwt.dev.lib}:${gwt.user.lib}:${sources}" + <target name="compile-javascript" depends="prepare-web-client" description="Compiles the javascript using GWT compiler."> + <property name="application.gwt.path" value="ch.systemsx.cisd.openbis.OpenBIS" /> + <delete dir="${webapp.dist}" /> + <java classpath="${ecp}:${gwt.dev.lib}:${gwt.user.lib}:${sources}" classname="com.google.gwt.dev.GWTCompiler" fork="true"> - <jvmarg value="-Xmx512M" /> - <arg value="-out" /> - <arg value="${webapp.dist}" /> - <arg value="${application.gwt.path}" /> - </java> - <move todir="${webapp.dist}"> - <fileset dir="${webapp.dist}/${application.gwt.path}" /> - </move> - </target> + <jvmarg value="-Xmx512M" /> + <arg value="-out" /> + <arg value="${webapp.dist}" /> + <arg value="${application.gwt.path}" /> + </java> + <move todir="${webapp.dist}"> + <fileset dir="${webapp.dist}/${application.gwt.path}" /> + </move> + </target> - <!-- + <!-- // Creates build information. --> - <target name="build-info" description="Creates build information."> - <build-info revision="revision.number" version="version.number" clean="clean.flag" /> - <echo file="${build.info.file}">${version.number}:${revision.number}:${clean.flag}</echo> - </target> + <target name="build-info" description="Creates build information."> + <build-info revision="revision.number" version="version.number" clean="clean.flag" /> + <echo file="${build.info.file}">${version.number}:${revision.number}:${clean.flag}</echo> + </target> - <!-- + <!-- // Override 'prepare-gwt' target by writing out 'OpenBIS.gwt.xml' and updating 'ClientPluginProvider.java'. --> - <target name="prepare-gwt" + <target name="prepare-gwt" description="Override 'prepare-gwt' by writing out 'OpenBIS.gwt.xml' and updating 'ClientPluginProvider.java'."> - <antcall target="prepare-web-client" /> - <antcall target="server-common-common.prepare-gwt" /> - </target> + <antcall target="prepare-web-client" /> + <antcall target="server-common-common.prepare-gwt" /> + </target> - <!-- + <!-- // Updates 'ClientPluginProvider.java' and 'OpenBIS.gwt.xml' with requested plugins. --> - <target name="prepare-web-client" depends="compile" + <target name="prepare-web-client" depends="compile" description="Updates 'ClientPluginProvider.java' and 'OpenBIS.gwt.xml' with requested plugins."> - <java classname="ch.systemsx.cisd.openbis.generic.shared.util.WebClientFilesUpdater" + <java classname="ch.systemsx.cisd.openbis.generic.shared.util.WebClientFilesUpdater" classpath="${ecp}:${sources}" fork="true" failonerror="true"> - <arg value="${sources}" /> - </java> - </target> + <arg value="${sources}" /> + </java> + </target> - <!-- + <!-- // Creates JAR file. --> - <target name="jar" depends="compile, build-info" description="Creates project jar file."> - <delete file="${jar.file}" /> - <recursive-jar destfile="${jar.file}"> - <fileset dir="${classes}"> - <include name="**/*.class" /> - <!-- Exclude 'service.properties' and 'log.xml' file. --> - <exclude name="service.properties" /> - <exclude name="log.xml" /> - <include name="**/*.properties" /> - <include name="${build.info.filename}" /> - </fileset> - </recursive-jar> - </target> + <target name="jar" depends="compile, build-info" description="Creates project jar file."> + <delete file="${jar.file}" /> + <recursive-jar destfile="${jar.file}"> + <fileset dir="${classes}"> + <include name="**/*.class" /> + <!-- Exclude 'service.properties' and 'log.xml' file. --> + <exclude name="service.properties" /> + <exclude name="log.xml" /> + <include name="**/*.properties" /> + <include name="${build.info.filename}" /> + </fileset> + </recursive-jar> + </target> - <!-- + <!-- // Creates WAR file. --> - <target name="war" depends="jar, compile-javascript" description="Creates project war file."> - <mkdir dir="${webapp.dist.web-inf}" /> - <copy todir="${webapp.dist.web-inf}"> - <fileset dir="${application.server.resource}"> - <include name="spring-servlet.xml" /> - </fileset> - <fileset dir="../server-common/${server-resource}"> - <include name="web-common.xml" /> - </fileset> - </copy> - <!-- Create an empty 'gwt.xml' file. --> - <echo file="${webapp.dist.web-inf}/gwt.xml" message="" /> - <war warfile="${webapp.file}" webxml="${application.server.resource}/web.xml"> - <fileset dir="${webapp.dist}" /> - <classes dir="source"> - <include name="**/*.sql" /> - </classes> - <!-- Add 'applicationContext.xml' and related files. --> - <classes dir="../server-common/${sources}"> - <include name="**/*.xml" /> - </classes> - <classes dir="${sources}"> - <include name="**/*.xml" /> - </classes> - <classes dir="${original.dist}"> - <include name="etc/log.xml" /> - </classes> - <lib dir="${dist}"> - <include name="${jar.file.name}" /> - </lib> - <lib dir="${lib}/commons-lang"> - <include name="commons-lang.jar" /> - </lib> - <lib dir="${lib}/commons-logging"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/commons-io"> - <include name="commons-io.jar" /> - </lib> - <lib dir="${lib}/jline"> - <include name="jline.jar" /> - </lib> - <lib dir="${lib}/commons-codec"> - <include name="commons-codec.jar" /> - </lib> - <lib dir="${lib}/commons-httpclient"> - <include name="commons-httpclient.jar" /> - </lib> - <lib dir="${lib}/log4j"> - <include name="log4j.jar" /> - </lib> - <lib dir="${lib}/spring"> - <include name="spring.jar" /> - </lib> - <lib dir="${lib}/spring/webmvc"> - <include name="spring-webmvc.jar" /> - </lib> - <lib dir="${lib}/activation"> - <include name="activation.jar" /> - </lib> - <lib dir="${lib}/mail"> - <include name="mail.jar" /> - </lib> - <lib dir="${gwt.lib}"> - <include name="gwt-servlet.jar" /> - </lib> - <lib dir="${lib}/commons-fileupload"> - <include name="*.jar" /> - </lib> - <!-- Database --> - <lib dir="${lib}/postgresql"> - <include name="postgresql.jar" /> - </lib> - <lib dir="${lib}/commons-dbcp"> - <include name="commons-dbcp.jar" /> - </lib> - <lib dir="${lib}/commons-pool"> - <include name="commons-pool.jar" /> - </lib> - <!-- Hibernate --> - <lib dir="${lib}/antlr"> - <include name="antlr.jar" /> - </lib> - <lib dir="${lib}/commons-collections"> - <include name="commons-collections.jar" /> - </lib> - <lib dir="${lib}/dom4j"> - <include name="dom4j.jar" /> - </lib> - <lib dir="${lib}/hibernate"> - <include name="hibernate3.jar" /> - </lib> - <lib dir="${lib}/hibernate/jta"> - <include name="jta.jar" /> - </lib> - <lib dir="${lib}/ehcache"> - <include name="ehcache.jar" /> - </lib> - <lib dir="${lib}/cglib"> - <include name="asm.jar" /> - <include name="asm-attrs.jar" /> - <include name="cglib.jar" /> - </lib> - <lib dir="${lib}/hibernate-annotations"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/hibernate-validator"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/javassist"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/slf4j"> - <include name="*.jar" /> - <exclude name="src.jar" /> - </lib> - <lib dir="${lib}/slf4j/log4j12"> - <include name="*.jar" /> - <exclude name="src.jar" /> - </lib> - <!-- Beanlib --> - <lib dir="${lib}/beanlib"> - <include name="beanlib.jar" /> - </lib> - <lib dir="${lib}/beanlib-hibernate"> - <include name="beanlib-hibernate.jar" /> - </lib> - <!-- Hibernate Search --> - <lib dir="${lib}/hibernate-search"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/lucene"> - <include name="*.jar" /> - </lib> - <lib dir="${lib}/lucene-highlighter"> - <include name="lucene-highlighter.jar" /> - </lib> - </war> - <!-- Does some cleaning. --> - <delete file="${jar.file}" failonerror="true" /> - <delete dir="${webapp.dist}" failonerror="true" /> - </target> + <target name="war" depends="jar, compile-javascript" description="Creates project war file."> + <mkdir dir="${webapp.dist.web-inf}" /> + <copy todir="${webapp.dist.web-inf}"> + <fileset dir="${application.server.resource}"> + <include name="spring-servlet.xml" /> + </fileset> + <fileset dir="../server-common/${server-resource}"> + <include name="web-common.xml" /> + </fileset> + </copy> + <!-- Create an empty 'gwt.xml' file. --> + <echo file="${webapp.dist.web-inf}/gwt.xml" message="" /> + <mkdir dir="${server.dist}" /> + <war warfile="${webapp.file}" webxml="${application.server.resource}/web.xml"> + <fileset dir="${webapp.dist}" /> + <classes dir="source"> + <include name="**/*.sql" /> + </classes> + <!-- Add 'applicationContext.xml' and related files. --> + <classes dir="../server-common/${sources}"> + <include name="**/*.xml" /> + </classes> + <classes dir="${sources}"> + <include name="**/*.xml" /> + </classes> + <classes dir="${original.dist}"> + <include name="etc/log.xml" /> + </classes> + <lib dir="${dist}"> + <include name="${jar.file.name}" /> + </lib> + <lib dir="${lib}/commons-lang"> + <include name="commons-lang.jar" /> + </lib> + <lib dir="${lib}/commons-logging"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/commons-io"> + <include name="commons-io.jar" /> + </lib> + <lib dir="${lib}/jline"> + <include name="jline.jar" /> + </lib> + <lib dir="${lib}/commons-codec"> + <include name="commons-codec.jar" /> + </lib> + <lib dir="${lib}/commons-httpclient"> + <include name="commons-httpclient.jar" /> + </lib> + <lib dir="${lib}/log4j"> + <include name="log4j.jar" /> + </lib> + <lib dir="${lib}/spring"> + <include name="spring.jar" /> + </lib> + <lib dir="${lib}/spring/webmvc"> + <include name="spring-webmvc.jar" /> + </lib> + <lib dir="${lib}/activation"> + <include name="activation.jar" /> + </lib> + <lib dir="${lib}/mail"> + <include name="mail.jar" /> + </lib> + <lib dir="${gwt.lib}"> + <include name="gwt-servlet.jar" /> + </lib> + <lib dir="${lib}/commons-fileupload"> + <include name="*.jar" /> + </lib> + <!-- Database --> + <lib dir="${lib}/postgresql"> + <include name="postgresql.jar" /> + </lib> + <lib dir="${lib}/commons-dbcp"> + <include name="commons-dbcp.jar" /> + </lib> + <lib dir="${lib}/commons-pool"> + <include name="commons-pool.jar" /> + </lib> + <!-- Hibernate --> + <lib dir="${lib}/antlr"> + <include name="antlr.jar" /> + </lib> + <lib dir="${lib}/commons-collections"> + <include name="commons-collections.jar" /> + </lib> + <lib dir="${lib}/dom4j"> + <include name="dom4j.jar" /> + </lib> + <lib dir="${lib}/hibernate"> + <include name="hibernate3.jar" /> + </lib> + <lib dir="${lib}/hibernate/jta"> + <include name="jta.jar" /> + </lib> + <lib dir="${lib}/ehcache"> + <include name="ehcache.jar" /> + </lib> + <lib dir="${lib}/cglib"> + <include name="asm.jar" /> + <include name="asm-attrs.jar" /> + <include name="cglib.jar" /> + </lib> + <lib dir="${lib}/hibernate-annotations"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/hibernate-validator"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/javassist"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/slf4j"> + <include name="*.jar" /> + <exclude name="src.jar" /> + </lib> + <lib dir="${lib}/slf4j/log4j12"> + <include name="*.jar" /> + <exclude name="src.jar" /> + </lib> + <!-- Beanlib --> + <lib dir="${lib}/beanlib"> + <include name="beanlib.jar" /> + </lib> + <lib dir="${lib}/beanlib-hibernate"> + <include name="beanlib-hibernate.jar" /> + </lib> + <!-- Hibernate Search --> + <lib dir="${lib}/hibernate-search"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/lucene"> + <include name="*.jar" /> + </lib> + <lib dir="${lib}/lucene-highlighter"> + <include name="lucene-highlighter.jar" /> + </lib> + </war> + <!-- Does some cleaning. --> + <delete file="${jar.file}" failonerror="true" /> + <delete dir="${webapp.dist}" failonerror="true" /> + </target> </project> \ No newline at end of file diff --git a/openbis/dist/etc/log.xml b/openbis/dist/etc/log.xml index d8b951be20a..15d96894f89 100644 --- a/openbis/dist/etc/log.xml +++ b/openbis/dist/etc/log.xml @@ -5,7 +5,7 @@ <appender name="DEFAULT" class="org.apache.log4j.DailyRollingFileAppender"> - <param name="File" value="logs/genericopenbis_log.txt" /> + <param name="File" value="logs/openbis_log.txt" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> diff --git a/openbis/dist/server/install.sh b/openbis/dist/server/install.sh index 48b115305b7..9681eff5d05 100755 --- a/openbis/dist/server/install.sh +++ b/openbis/dist/server/install.sh @@ -1,123 +1,95 @@ #! /bin/bash -APPLICATION_NAME=genericopenbis -usage() { - echo "Usage: $0 [--port <port number>] <server folder> [<service properties file> <log configuration file>]" - 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 -} - -check_arguments $@ -JETTY_PORT=8443 -if [ $1 == "--port" ]; then - shift - check_arguments $@ - JETTY_PORT=$1 +nostartup=0 +if [[ "$1" = '-n' || "$1" = '--nostartup' ]]; then + nostartup=1 shift fi -check_arguments $@ -# Installation folder: where the distribution zip file has been unzipped (and where this script resides) +if [ $# -lt 1 ]; then + echo "Usage: $0 [--nostartup] <server folder> [<service properties file>]" + echo " --nostartup: do not start up tomcat automatically" + exit 1 +fi + installation_folder="`dirname $0`" if [ ${installation_folder#/} == ${installation_folder} ]; then installation_folder="`pwd`/${installation_folder}" fi -# Where the server will be installed. server_folder=$1 +shift if [ ${server_folder#/} == ${server_folder} ]; then server_folder="`pwd`/${server_folder}" fi -properties_file="$installation_folder/service.properties" -logconf_file="$installation_folder/log.xml" -if [ $# -gt 1 ]; then - if [ $# -lt 3 ]; then - usage +properties_file="${installation_folder}/service.properties" +# Check whether given properties file exists and is a regular file. +if [ $1 ]; then + if [ ! -f $1 ]; then + echo "Given properties file '$1' does not exist!" + exit 1 fi - properties_file="$2" - # Specify properties file path as absolute + properties_file="$1" if [ "${properties_file#/}" == "${properties_file}" ]; then properties_file="`pwd`/${properties_file}" fi - logconf_file="$3" - # Specify log configuration file path as absolute - if [ "logconf_file#/}" == "logconf_file}" ]; then - logconf_file="`pwd`/logconf_file}" - fi -fi -# Check whether given properties file exists and is a regular file. -if [ ! -f $properties_file ]; then - echo Given properties file \'$properties_file\' does not exist! - exit 1 fi -# Check whether given log configuration file exists and is a regular file. -if [ ! -f $logconf_file ]; then - echo Given log configuration file \'$logconf_file\' does not exist! - exit 1 -fi - -rel_jetty_folder="jetty-`cat $installation_folder/jetty-version.txt`" -jetty_folder="${server_folder}/${rel_jetty_folder}" +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" # Creates server folder. -mkdir -p "$server_folder" +mkdir -p "${server_folder}" -# 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" +# 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" echo "or choose another server folder." exit 1 fi -echo Unzipping Jetty... -# Files are unzipped in $rel_jetty_folder -unzip -q "$installation_folder/jetty.zip" -d "$server_folder" -cp -p "$installation_folder"/jetty.xml "$jetty_folder"/etc - -echo Preparing and installing web archive... -war_classes=WEB-INF/classes -mkdir -p "$war_classes"/etc -# Replace 'service.properties' and 'log.xml' files in war -cp -p "$properties_file" "$war_classes/service.properties" -cp -p "$logconf_file" "$war_classes/etc/log.xml" -zip -u "$installation_folder"/$APPLICATION_NAME.war "$war_classes"/service.properties "$war_classes"/etc/log.xml -cp -p "$installation_folder"/$APPLICATION_NAME.war "$jetty_folder"/webapps -rm -rf WEB-INF - -# Create symlinks for easier access. -cd "$server_folder" -ln -s "${rel_jetty_folder}" jetty - -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"/passwd.sh "$JETTY_BIN_DIR" - -# Create a file called 'jetty.properties'. -JETTY_PROPERTIES="$JETTY_BIN_DIR"/jetty.properties -echo "JETTY_PORT=$JETTY_PORT" > "$JETTY_PROPERTIES" -echo "JETTY_STOP_PORT=8079" >> "$JETTY_PROPERTIES" -echo "JETTY_STOP_KEY=secret" >> "$JETTY_PROPERTIES" -# Here goes the path of the JVM in case you need to set it hard -echo "JVM=\"java\"" >> "$JETTY_PROPERTIES" -# The default memory of the JVM at start up. -echo "VM_STARTUP_MEM=\"256M\"" >> "$JETTY_PROPERTIES" -# The maximum memory for the JVM -echo "VM_MAX_MEM=\"786M\"" >> "$JETTY_PROPERTIES" - -# Create a 'work' directory in jetty folder. Web applications will be unpacked there. -mkdir -p "$jetty_folder"/work - -cd "$jetty_folder" -echo Starting Jetty... -./bin/startup.sh \ No newline at end of file +unzip -q "${installation_folder}/apache-tomcat.zip" -d "$server_folder" +cp -p "${installation_folder}"/*.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\\ +CATALINA_OPTS=\"-Xmx512M -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 + +cp -p "${properties_file}" "${openbis_web_inf}/classes/service.properties" +echo Given properties file \'${properties_file}\' copied to \'${openbis_web_inf}/classes/service.properties\' + +# Create symlinks for easier access + +cd "${server_folder}" +ln -s "${rel_tomcat_folder}" apache-tomcat +cd "${tomcat_folder}" +mkdir etc +ln -s "../${rel_openbis_web_inf}"/classes/service.properties etc/ + +if [ "$nostartup" -eq 0 ]; then + echo Starting tomcat... + bin/startup.sh +fi \ No newline at end of file diff --git a/openbis/dist/server/jetty.xml b/openbis/dist/server/jetty.xml deleted file mode 100644 index f9d6ccb9b2e..00000000000 --- a/openbis/dist/server/jetty.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> - -<Configure id="Server" class="org.mortbay.jetty.Server"> - - <!-- - // Java5 bounded threadpool with job queue. - // Can be found in library 'jetty-java5-threadpool.jar'. - --> - <Set name="threadPool"> - <New class="org.mortbay.thread.concurrent.ThreadPool"> - <Set name="corePoolSize">250</Set> - <Set name="maximumPoolSize">250</Set> - </New> - </Set> - - <Call name="addConnector"> - <Arg> - <!-- - // Java5 bounded threadpool with job queue. - // Can be found in library 'jetty-java5-threadpool.jar'. - --> - <New class="org.mortbay.jetty.security.SslSelectChannelConnector"> - <Set name="Port"> - <SystemProperty name="jetty.port" default="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/keystore - </Set> - <Set name="Password">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set> - <Set name="KeyPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set> - </New> - </Arg> - </Call> - - <Set name="handler"> - <New class="org.mortbay.jetty.webapp.WebAppContext"> - <Set name="contextPath">/genericopenbis</Set> - <Set name="war"> - <SystemProperty name="jetty.home" default="." />/webapps/genericopenbis.war - </Set> - <Set name="tempDirectory"> - <SystemProperty name="jetty.home" default="." />/work/genericopenbis - </Set> - </New> - </Set> - - <!-- =========================================================== --> - <!-- 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/passwd.sh b/openbis/dist/server/passwd.sh index e6563e34219..0bd18f25c71 100755 --- a/openbis/dist/server/passwd.sh +++ b/openbis/dist/server/passwd.sh @@ -31,7 +31,7 @@ if [ ! -x "$JAVA_BIN" ]; then fi -LIB=work/$APPLICATION_NAME/webapp/WEB-INF/lib +LIB=webapps/$APPLICATION_NAME/WEB-INF/lib $JAVA_HOME/bin/java \ -cp $LIB/commons-lang.jar:$LIB/commons-io.jar:$LIB/commons-codec.jar:$LIB/jline.jar:$LIB/log4j.jar:$LIB/$APPLICATION_NAME.jar \ ch.systemsx.cisd.authentication.file.PasswordEditorCommand "$@" diff --git a/openbis/dist/server/server.keystore b/openbis/dist/server/server.keystore new file mode 100644 index 0000000000000000000000000000000000000000..3982a68319e9e1fed5ace51f72682d79e448eaa2 GIT binary patch literal 2006 zcmezO_TO6u1_mZL<}c1KElN(+Ev_ssNzE;;U|?VrT3h!+fq^wb&(y#Ys5IW7i7DEk ziSft+W+p}^CKfjq{e1?!Y@Awc9&O)w85vnw84QXHxeYkkm_u3EgqfT@3`GotKpYNX zZl}cJ)EwR5lEjn}Lp}o@kSMz_D_GP}(10Jr=Mv@!hFBh9$ZNn265<wSarO*$F_bot z1aX;#g&?lfgSk>KIm19soY%nIz}U#x(9+b<$SexTwE%LBpxgm*Q{#N(kYQwHU~cSX zFlg*#YHVbfd2#J>f5FclRU22IVVG*t9J;3M`AtK?=(C>r4^BQja6|U{smtH5&AO52 znOyrdOMVHH;37M*rOT}kIWE)iQj_fH;r`2L`*yd$hO0|H#dexhly7#)`+uS2;irFR z^Ya>JH{CG4`m@#lLdAl_Qjf{qTU<4kO%Jzk2<DU#GjX|OJN+XQGa~~dvh#ou#|(5= zT*~MBuOB|1d0Q^0P&mT%RblM|-t%8W!<H<)@q9wt62U8Z&2v|NkPm8fk|~@Soi)8= z{szXnpNDmy`S-kgHoav-x7_SgR<693;Wm%fzPiU_wsHNAejhfouNS8lmL*5(%@Fe1 z!Qqrsq&o33qfXj{&#|W8>fX)&_w1-?g22tV0M&3{Qe<RcE6LAIPAmbXzWh#cK47xj z1x$9^4EWf%wAmP07`2!LfhmoFrHN_L^2uLgj)v}RZcN^OCB5~*svYbM4W~{m(Y+Jz z<2L24W~9xp{l+<E4<a0xcSKJuzr&p$Zt>VHJJRjx|0}oEr|Vug(0Wg<xTQYpq{yEy z+ugoa{@pFF@JKvK{%K!Vx$iUOine$Ef4AO@WwpDZ_Pl)^!##^>*PdMMnd{frv%aeS z?~<u};#nF~_yiYn?dGpFsy$k{!Y}Ug#|KxL?Q-S!iLcILd+F}zZCD(2Utn!s0<&(` zt+%_U>H8Wn9dTRBw{%sA&QT@FODktqt~$VS{{P9w$e_8qxcc0Gvp-P2ksHMlxMBC1 zlUKiceosF<=fy4dUMr`{nM=}o<6ouOhj=_>sd^fp{KzS}a-W{~(LU*(p785haTR49 z$G4=s?=F2ACUuj4xxuB}i`^~KXK#P*VVuap$oDZV<FbBpf<*1_oK~Yf3VT;h^p8_- z;dp4dB`cTTg6p>~hh|LTg;J-SpILr9`gQj_SWgB2*)p#%op+JL1@4t=*F2uOC+B(5 zWHFiewEwIBM#&yA5q_E`Hz&XMq|nAm>m_~k_q^b-e0lxEd-dF1D#w_$w#`zFb8>WP zi<zKd@ucantNR<K%Uu7LHGWTfo3gsbbZ>m{-v<wF9a%RaH#b>DvZ_E|N>*uu@A9e% z^CS-~GI8nN&*5k7Xm*3YlI!q_fGO58l|7SGc0QB)taQ_>{a|C~!mSM-ex&pH#T>Br zOO*+a<%whd7r18K`G487UtfMY>E50RTf09v#<Jdx_{(gk7@KL~Hup{sZw+(qZflQ< zbT#Se{DFTZLnRwSM6TJ$=W;mM@;|;3S#V~@dh6m<aqaOfi@vU3qHBAS|Ivhxb2WtS zoZCIua?gpn!daWwHIyDYeB3ZbXQF4v8u7wMohve=R`;^-)OhqI9ybu)6Fh@2@W6cC zO(I+K!6_PEe)<6uvKO%Y+zc!_9kX^I=Rg)<(V1f?08Hh;QjSfSJv1*nFTXqwCc=Rs z!j2)rg(1R?A;Jt7ffky;g5AK(*wDxTRA`z5i%oMVm(H%iS6p@%->=pG!L@7IHdejd zip*VHWoxs({rkIy-E@OQ)NI{66^$(4eVdB^Fn4mCYg_#_GxN0d&X4=Qiaa^+T|I7M z*Z&WS??g5}d*wGf)mJvB^OMOz|0~;SJ)IWM3{?8}N_uC1**`OB{rO%Rzn6c#^WgIH z4S~W|$9GK@IxMeJcyMvo?XMWcB`~r;#btG1n#c78n(G@AeYL0l3R!sVw3z58o9UH@ z_b!hq66(GZeLd2>+GdJz<x{VGSxb4{uYo6xPW{(zoqwHa@Aa4j=Sgz|9+YlxHru55 z>R{gj>6S$2FqdN%ip(4hzy1XH{%uluQu^v-E-%NH2~$>{TWmDxf1V9rQ1r1?!sU(^ dy%Kx6A3KIW3GRJt?z8c>hp_sFXcjZ(*8rL20e}Di literal 0 HcmV?d00001 diff --git a/openbis/dist/server/server.xml b/openbis/dist/server/server.xml new file mode 100644 index 00000000000..baf7beebebb --- /dev/null +++ b/openbis/dist/server/server.xml @@ -0,0 +1,373 @@ +<!-- 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="8005" 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. + --> + + <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> + <Connector port="8080" maxHttpHeaderSize="8192" + maxThreads="150" minSpareThreads="25" maxSpareThreads="75" + enableLookups="false" redirectPort="8443" acceptCount="100" + connectionTimeout="0" disableUploadTimeout="true" /> + <!-- 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="server.keystore" + enableLookups="false" disableUploadTimeout="true" + acceptCount="100" scheme="https" secure="true" + clientAuth="false" sslProtocol="TLS" /> + + <!-- Define an AJP 1.3 Connector on port 8009 --> + <Connector port="8009" + enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> + + <!-- 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/service.properties b/openbis/dist/server/service.properties new file mode 100644 index 00000000000..80a94fc8d9f --- /dev/null +++ b/openbis/dist/server/service.properties @@ -0,0 +1,44 @@ +# Supported: 'file-authentication-service' and 'crowd-authentication-service' +authentication-service = file-authentication-service + +# The time after which an inactive session is expired by the service (in minutes). +session-timeout = 30 + +# Authorization +# Supported: 'no-authorization' and 'active-authorization' +authorization-component-factory = active-authorization + +script-folder = . + +# Supported: currently only 'postgresql' is supported +database.engine = postgresql +database.create-from-scratch = false +# For debugging set this value to true. +database.script-single-step-mode = false +database.url-host-part = +database.kind = demo +database.owner = +database.owner-password = +database.admin-user = +database.admin-password = + +crowd.service.host = crowd.systemsx.ch +crowd.service.port = 8443 +crowd.application.name = openbis +crowd.application.password = + +# The database instance local unique identifier. Used when the new database is created. +database-instance = CISD + +# Base URL of the Data Store Server +data-store-server-base-url = https://localhost:8889/dataset-download + +# Hibernate Search +# The working directory. +hibernate.search.index-base = ./indices +# One of NO_INDEX, SKIP_IF_MARKER_FOUND, INDEX_FROM_SCRATCH. +# If not specified, default (SKIP_IF_MARKER_FOUND) is taken. +hibernate.search.index-mode = SKIP_IF_MARKER_FOUND +# Defines the maximum number of elements indexed before flushing the transaction-bound queue. +# Default is 1000. +hibernate.search.batch-size = 1000 \ No newline at end of file diff --git a/openbis/dist/server/shutdown.sh b/openbis/dist/server/shutdown.sh deleted file mode 100755 index 219ab3516c0..00000000000 --- a/openbis/dist/server/shutdown.sh +++ /dev/null @@ -1,16 +0,0 @@ -#! /bin/bash - -# 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 -DSTOP.PORT=$JETTY_STOP_PORT \ - -DSTOP.KEY=$JETTY_STOP_KEY \ - -jar start.jar --stop \ No newline at end of file diff --git a/openbis/dist/server/startup.sh b/openbis/dist/server/startup.sh deleted file mode 100755 index 31aaf37fdd1..00000000000 --- a/openbis/dist/server/startup.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash - -# 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 -DSTOP.PORT=$JETTY_STOP_PORT \ - -DSTOP.KEY=$JETTY_STOP_KEY \ - -Djetty.port=$JETTY_PORT \ - -server \ - -Xms${VM_STARTUP_MEM} \ - -Xmx${VM_MAX_MEM} \ - -jar start.jar etc/jetty.xml >> logs/jetty.out 2>&1 & \ No newline at end of file diff --git a/openbis/etc/log_system_test.xml b/openbis/etc/log_system_test.xml index def37b0bb4c..b69c992b1aa 100644 --- a/openbis/etc/log_system_test.xml +++ b/openbis/etc/log_system_test.xml @@ -8,7 +8,7 @@ <appender name="FILE" class="org.apache.log4j.FileAppender"> - <param name="File" value="targets/genericopenbis_log.txt" /> + <param name="File" value="targets/openbis_log.txt" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> diff --git a/openbis/resource/server/web.xml b/openbis/resource/server/web.xml index e0db4ef9505..cf721a7bafe 100644 --- a/openbis/resource/server/web.xml +++ b/openbis/resource/server/web.xml @@ -19,7 +19,7 @@ <!-- Trying kind of extension (i.e., '*.do') here as 'url-pattern' does not work. --> <servlet-mapping> <servlet-name>spring</servlet-name> - <url-pattern>/genericopenbis/*</url-pattern> + <url-pattern>/openbis/*</url-pattern> </servlet-mapping> <!-- diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java index f5c1825aac6..e987688024c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java @@ -40,7 +40,7 @@ public final class GenericConstants */ public static final String ID_PREFIX = "openbis_"; - private static final String APPLICATION_NAME = "genericopenbis"; + private static final String APPLICATION_NAME = "openbis"; public static final String COMMON_SERVER_NAME = createServicePath("common"); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceServlet.java index 9131b8489b3..0c34172be24 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceServlet.java @@ -37,7 +37,7 @@ import ch.systemsx.cisd.openbis.generic.shared.ResourceNames; */ @Controller @RequestMapping( - { "/common", "/genericopenbis/common" }) + { "/common", "/openbis/common" }) public final class CommonClientServiceServlet extends GWTRPCServiceExporter { private static final long serialVersionUID = 1L; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/FileExportServiceServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/FileExportServiceServlet.java index 2783438165f..65878c5b452 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/FileExportServiceServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/FileExportServiceServlet.java @@ -32,7 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.ResourceNames; */ @Controller @RequestMapping( - { "/export-file-downloader", "/genericopenbis/export-file-downloader" }) + { "/export-file-downloader", "/openbis/export-file-downloader" }) public class FileExportServiceServlet extends AbstractFileDownloadServlet { @Resource(name = ResourceNames.COMMON_SERVICE) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/UploadServiceServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/UploadServiceServlet.java index fc0c64a8c4d..4d109f1a193 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/UploadServiceServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/UploadServiceServlet.java @@ -54,14 +54,14 @@ import ch.systemsx.cisd.common.utilities.Message; * string in case of exception. * </p> * <p> - * <i>URL</i> mappings are: <code>/upload</code> and <code>/genericopenbis/upload</code>. + * <i>URL</i> mappings are: <code>/upload</code> and <code>/openbis/upload</code>. * </p> * * @author Christian Ribeaud */ @Controller @RequestMapping( - { "/upload", "/genericopenbis/upload" }) + { "/upload", "/openbis/upload" }) public final class UploadServiceServlet extends AbstractCommandController { private static final Logger operationLog = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceServer.java index 1619d703fb5..9d956e830c2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceServer.java @@ -32,7 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.ResourceNames; */ @Controller @RequestMapping( - { "/rmi-etl", "/genericopenbis/rmi-etl" }) + { "/rmi-etl", "/openbis/rmi-etl" }) public class ETLServiceServer extends HttpInvokerServiceExporter { @Resource(name = ResourceNames.ETL_SERVICE) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/ExperimentAttachmentDownloadServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/ExperimentAttachmentDownloadServlet.java index 4d820657c6a..933f294866d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/ExperimentAttachmentDownloadServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/ExperimentAttachmentDownloadServlet.java @@ -38,7 +38,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; */ @Controller @RequestMapping( - { "/experiment-attachment-download", "/genericopenbis/experiment-attachment-download" }) + { "/experiment-attachment-download", "/openbis/experiment-attachment-download" }) public class ExperimentAttachmentDownloadServlet extends AbstractFileDownloadServlet { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceServlet.java index 993148e25fc..175606ff1f4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceServlet.java @@ -29,7 +29,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.shared.ResourceNames; /** * The {@link GWTRPCServiceExporter} for the <i>generic</i> service. * <p> - * <i>URL</i> mappings are: <code>/generic</code> and <code>/genericopenbis/generic</code>. + * <i>URL</i> mappings are: <code>/generic</code> and <code>/openbis/generic</code>. * The encapsulated {@link ICommonClientService} service implementation is expected to be defined as * bean with name <code>generic-service</code>. * </p> @@ -38,7 +38,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.shared.ResourceNames; */ @Controller @RequestMapping( - { "/generic", "/genericopenbis/generic" }) + { "/generic", "/openbis/generic" }) public final class GenericClientServiceServlet extends GWTRPCServiceExporter { private static final long serialVersionUID = 1L; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ScreeningClientServiceServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ScreeningClientServiceServlet.java index 264b520fa56..90fbf4b761e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ScreeningClientServiceServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ScreeningClientServiceServlet.java @@ -38,7 +38,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.ResourceNames; */ @Controller @RequestMapping( - { "/screening", "/genericopenbis/screening" }) + { "/screening", "/openbis/screening" }) public final class ScreeningClientServiceServlet extends GWTRPCServiceExporter { private static final long serialVersionUID = 1L; diff --git a/openbis_all/source/bash/sprint_install.sh b/openbis_all/source/bash/sprint_install.sh index 465f9d4ee7c..e7dd285d650 100755 --- a/openbis_all/source/bash/sprint_install.sh +++ b/openbis_all/source/bash/sprint_install.sh @@ -43,15 +43,6 @@ chmod 700 download-service.sh export JAVA_HOME=/usr ./download-service.sh start -echo Installing generic openBIS... -cd ~ -unzip openbis-S$VER* -WAR_FILE=openbis/genericopenbis.war -# Put the previous 'service.properties' file into the war file. -jar -uf $WAR_FILE -C old/sprint-$PREV_VER/openBIS-server/apache-tomcat/webapps/genericopenbis WEB-INF/classes/service.properties -# Just put the war file in the weapps directory, Tomcat will do the rest -mv $WAR_FILE sprint/openBIS-server/apache-tomcat/webapps - echo Doing some cleaning... cd mv *.zip tmp -- GitLab