Tomcat Installation

Im Folgenden ist die Installation des Tomcats für die WiM beschrieben. Primär richtet sich diese Anleitung an Linux-Systeme. Teile hiervon sind aber auch für das Deployment auf Windows-Umgebungen relevant.

Download Tomcat

Download der aktuellen Version von Tomcat 9 (Version muss ggf. im Downloadlink angepasst werden):

wget https://apache.mivzakim.net/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz

Extrahieren und verschieben in /opt-Verzeichnis:

tar xvfz  apache-tomcat-9.0.39.tar.gz
mv apache-tomcat-9.0.39/ /opt/tomcat/

Linuxnutzer Anlegen

Bei Verwendung eines Linux-Systems wird empfohlen, einen Nutzer “tomcat” anzulegen und diesem das Verzeichnis des Tomcats freizugeben.
Neuen Nutzer für den Tomcatserver anlegen:

adduser --disabled-login --home /opt/tomcat/ tomcat
chown -R tomcat:tomcat /opt/tomcat

Nutzerverwaltung des Tomcats festlegen

Um sich an der Applikation anzumelden, muss eine Nutzerverwaltung angelegt werden. Hier zu gibt es zwei Alternativen. Wir empfehlen Alternative B, da so einfach und flexibel neue Nutzer in der Oberfläche der B2B hinzugefügt werden können.

Tomcatnutzer in conf/tomcat-users.xml Verwalten (Alternative A)

Hierbei werden die Tomcatnutzer in der tomcat-users.xml verwaltet. Jeder neue Nutzer muss von einem Admin direkt in der Datei angelegt werden.

tomcat/conf/tomcat-users.xml editieren (Beispiel):

<role rolename="b2bbp"/>
<role rolename="fastlane"/>
<user username="admin" password="admin" roles="fastlane,b2bbp"/>

Tomcatnutzer in Datenbank Verwalten (Alternative B)

Um die B2B-Nutzerverwaltung zur Anmeldung zu nutzen und Nutzer bequem in der Oberfläche der B2B hinzufügen zu können, muss folgender Eintrag in der server.xml des WiM-Tomcats hinzugefügt werden:

<Realm className="org.apache.catalina.realm.LockOutRealm">
  <Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99" dataSourceName="jdbc/b2bbp" localDataSource="true"
    userTable="B2BBP_ADM_ACCOUNT" userNameCol="userid" userCredCol="password" userRoleTable="B2BBP_ADM_USER" roleNameCol="roleid">
    <CredentialHandler className="org.apache.catalina.realm.NestedCredentialHandler">
      <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="md5" />
      <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="sha-512" />
    </CredentialHandler>
  </Realm>
</Realm>

Tomcat Startup Skript (Linux)

Um den Tomcat bequem hoch und wieder runter fahren zu können, können Sie ein Skript runterladen. Dies müsste noch gegebenenfalls an das System angepasst werden.

Startup Skript installieren

  #!/bin/sh
  # Startup script for the Tomcat Java Servlets and JSP server
  #
  # chkconfig: - 85 15
  # description: Tomcat Java Servlets and JSP server
  # processname: tomcat
  # config:
  #
  ### BEGIN INIT INFO
  # Provides:          tomcat
  # Required-Start:    $network $syslog $named
  # Required-Stop:     $network $syslog $named
  # Default-Start:     2 3 4 5
  # Default-Stop:      0 1 6
  # Short-Description: Start/stop Tomcat Java Servlets and JSP server
  ### END INIT INFO



  CATALINA_HOME=/opt/tomcat
  JAVA_OPTS="-Dfile.encoding=ISO-8859-1 \
  -Xms4096m -Xmx8288m \
  -XX:PermSize=256m \
  -XX:MaxPermSize=512m \
  -Xss2m"


  ## Enable debugging
  JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  ## Enable Profiler
  # JAVA_OPTS="$JAVA_OPTS -agentpath:/opt/tomcat/libyjpagent.so=usedmem=90"

  # Enable POP3 timout in B2B (60 sec)
  JAVA_OPTS="$JAVA_OPTS -Dmail.pop3.connectiontimeout=60000 -Dmail.pop3.timeout=60000 -Dmail.pop3.writetimeout=60000"

  SU=`which su`
  TOMCAT_OWNER=tomcat
  WAIT_BEFOR_KILL=10

  CATALINA_PID="$CATALINA_HOME/temp/tomcat.pid"
  CATALINA_SH="$CATALINA_HOME/bin/catalina.sh"


  tomcat_pid() {
  #	echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
  if [ -f "$CATALINA_PID" ]; then
  PID=`cat $CATALINA_PID`
  if [ -f /proc/$PID/exe ]; then
    echo $PID
  else
    # PID file exists but no corresponding process -> delete PID file
    rm -f $CATALINA_PID
  fi
  fi
  }

  catalina_sh() {
  $SU $TOMCAT_OWNER -c "set -a; \
                      CATALINA_HOME=\"$CATALINA_HOME\"; \
                      JAVA_OPTS=\"$JAVA_OPTS\"; \
                      CATALINA_PID=\"$CATALINA_PID\"; \
                      cd $CATALINA_HOME; \
                      $CATALINA_SH $@ >/dev/null"

  }

  start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
  echo "Tomcat already running (pid $pid)"
  else
  echo -n "Starting Tomcat... "
  catalina_sh start
  status="$?"
  sleep 1
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo "OK (pid $pid)"
  else
    echo "FAILED"
    return 1
  fi
  fi
  }

  stop() {
  pid=$(tomcat_pid)
      if [ -n "$pid" ]; then
  echo -n "Stopping Tomcat (pid $pid): "
  kill $pid
  count=0;
  until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $WAIT_BEFOR_KILL ]
  do
    echo -n "#"
    sleep 1
    count=$(($count+1));
  done

  # killing the pid failed, force termination
  if [ $count -gt $WAIT_BEFOR_KILL ]; then
    echo -n -e "\nForcing shutdown"
    kill -9 $pid
  fi

  rm -f "$CATALINA_PID"

  echo " OK"
  else
              echo "No pid file found"
  fi
  }

  # See how we were called.
  case "$1" in
  start)
  #if [ -z "$JAVA_HOME" ]; then
  #	echo "no JDK found - please set JAVA_HOME"
  #	exit 1
  #fi

  if [ ! -d "$CATALINA_HOME/conf" ]; then
    echo "invalid CATALINA_HOME: $CATALINA_HOME"
    exit 1
  fi
  start
  ;;
  stop)
  stop
  ;;
  restart)
  stop
  start
  ;;
  *)
  echo $"Usage: tomcat {start|stop|restart}"
  exit
  esac

In eine Datei tomcat schreiben und als Startscript hinzufügen

cp tomcat /etc/init.d/tomcat
chmod +x /etc/init.d/tomcat
update-rc.d tomcat defaults

Dieses kann nun abhängig von der Distribution z.B. mit service tomcat start ausgeführt werden.

Dienst Anlegen (Windows)

Konträr zum Startscript müsste unter Windows ein Dienst eingerichtet werden, um den Tomcat zu starten. Eine Anleitung dazu ist in der B2B Installationsdokumentation zu finden.

Encoding: Der Server muss mit dem ISO-8859-1 Encoding gestartet sein.  (Sollte immer der Fall sein)

Deployskript (Linux)

Für Linuxsysteme ist es sinnvoll ein Deployskript einzurichten. Je nach Knotenanzahl und installierten Produkten kann dies mehr oder weniger Komplex ausfallen. Hier eine einfache Vorlage:

#!/bin/bash
BASEDIR="/opt/tomcat"
WGET=`which wget`
UNZIP=`which unzip`
ZIP=`which zip`
install_wim() {
        RELEASE="WIM"
        WIMURL="https://nli-download.next-level-apps.com/PublicDL/FastlaneBackend/FastlaneBackend-V1.10/WIM/fastlane-backend.war"
        do_install
}
do_install() {
        echo -e "\e[0;32m*** Installing current \e[1m$RELEASE\e[22m version ***\e[0m"
        echo -e "\e[0;33m*** Shutting down tomcat ***\e[0m"
        /etc/init.d/tomcat stop
        echo -e "\e[0;33m*** Deleting old deployment ***\e[0m"
        rm -r "$BASEDIR/webapps/fastlane-backend/"
        rm "$BASEDIR/webapps/fastlane-backend.war"
        echo -e "\e[0;33m*** Loading new deployment files for version $VERSION ***\e[0m"
        $WGET "$WIMURL" -O "$BASEDIR/webapps/fastlane-backend.war""
        echo -e "\e[0;33m*** Deploying modules ***\e[0m"

        echo -e "\e[0;33m*** Starting tomcat ***\e[0m"
        /etc/init.d/tomcat start
        echo -e "\e[0;32mFERTIG\e[0m";
}

install_wim;