B2B Installation Tomcat

Überblick

Dieses Dokument beschreibt die Installation und das Customizing der B2B by Practice Plattform sowie aller benötigten Abhängigkeiten und praktischen Werkzeugen.

Grundsätzliches

  • Slash (‚/‘) und Backslash (‚\‘) dürfen nicht vertauscht werden. Unter Windows muss in allen Pfaden, die als Einstellung in B2B eingetragen werden der Slash als Verzeichnistrenner genutzt werden.

  • B2B und alle zugehörigen Programme werden in dieser Anleitung beispielhaft unter C:\B2B abgelegt. Es kann natürlich auch jeder andere Pfad genutzt werden. Alle Pfadangaben aus dieser Anleitung müssen dann entsprechend angepasst werden.

  • Die meisten Inhalte von Konfigurationsdateien sind zum einfachen Kopieren in der Datei Snippets.txt nochmal hinterlegt.

Umgebungsvariablen unter Windows einrichten

  1. Rechte Maustaste auf Computer oder Arbeitsplatz (Siehe Bild 1 Punkt 1)

  2. Erweiterte Systemeinstellungen wählen (Siehe Bild 1 Punkt 2)

  3. Unter der Registerkarte „Erweitert“ den Button „Umgebungsvariablen“ anklicken (Siehe Bild 1 Punkt 3)

  4. Nun werden alle Umgebungsvariablen aufgelistet. Entsprechende Variable kann nun ausgewählt und bearbeitet oder hinzugefügt werden (Siehe Bild 2)

Bild 1 Bild 2

Vorbereitung

  • Empfohlene Anforderungen: 10GB Festplattenspeicher, 4GB RAM, Windows mit aktuellen Patches

  • Emailserver mit POP3 und SMTP einrichten. Emailadresse einrichten (Username/Passwort bereithalten)

  • DB einrichten. Datenbankname, Username/Password sowie Datenbanktreiber (für Java) bereithalten. Bei Oracle ab 11g mit Thin, bei älteren Oracle Versionen mit OCI Treiber, dann müssen zusätzliche betriebsystemabhängige Treiberkomponenten installiert werden. http://www.oracle.com/technetwork/database/features/instant-client BASIC–> OCI

  • Neueste Flashversion installieren (Download URL: http://get.adobe.com/de/flashplayer/)

  • Nützliche Tools, die installiert sein sollten: PDF-Reader, Texteditor, 7zip

Installation

Ordnerstruktur anlegen und Dependencies installieren

  1. Ordner C:\B2B anlegen: hier werden alle Dateien von B2B und dessen Abhängigkeiten abgelegt.

  2. Verzeichnis C:\B2B\tomcat_all anlegen: dieses Verzeichnis wird von allen Tomcat Instanzen genutzt

  3. Verzeichnis C:\B2B\tomcat_all\index\full anlegen: hier werden die Suchindizes gespeichert. Dieser Pfad wird beim Customizing in das Property B3P_SEARCH_INDEX_DIRECTORY eingetragen.

  4. Verzeichnis C:\B2B\tomcat_all\logs anlegen: hier werden die B2B Logdateien gespeichert. Dieser Pfad wird beim Customizing in das Property B3P_LOG4J_BASE_DIR eingetragen.

  5. Ordner C:\B2B\jdk anlegen und eine unterstütze JDK installieren ( Siehe Systemvoraussetzungen B2B.)

  6. Ordner C:\B2B\support anlegen und DbVisualizer dorthin installieren und mit entsprechender Lizenz freischalten (Die 21 Tage Testversion reicht. Download: http://www.dbvis.com/products/dbvis/download/. Die Lizenz bekommt man auf der gleichen Seite unter „Evaluation license for DbVisualizer Personal“ )

  7. Für Oracle Datenbanken müssen zusätzlich die Oracle Treiber nach C:\B2B\support\DBVisualizer-x.x.x\jdbc\oracle kopieren (der Ordner oracle muss angelegt werden). x.x.x muss mit der jeweiligen Versionsnummer des DbVisualizer ersetzt werden.

  8. Tomcat nach C:\B2B\tomcat1 entpacken (64 Bit Version braucht nicht mehr ersetzt zu werden). Tomcat kann unter http://tomcat.apache.org/download-60.cgi heruntergeladen werden. Je nach Plattform wird „32-bit Windows zip” oder „64-bit Windows zip“ benötigt.

Datenbankverbindung mit DbVisualizer einrichten

DbVisualizer starten und eine neue Datenbankverbindung mit dem Wizard einrichten. Den Verbindungsnamen kann man beliebig wählen.

Im 2. Schritt bei der Treiberauswahl wird der entsprechende Treiber gewählt. Wenn kein grüner Haken neben dem gewählten Treiber steht, so muss die Treiberdatei (JAR Datei) über „Load Driver File(s)“ angegeben werden. Hier kann der unter Punkt 8 kopierte Treiber genutzt werden.

Im 3. Schritt werden nun noch die Zugangsdaten abgefragt (Datenbankname, Benutzername und Passwort)

Umgebungsvariablen konfigurieren

  1. Umgebungsvariable $JAVA_HOME auf C:\B2B\jdk setzen (Siehe Bild 2 unter „Umgebungsvariablen einrichten“)

  2. Umgebungsvariable $PATH anpassen: Hinzufügen von Verzeichnis C:\B2B\jdk\bin (Siehe Bild 3)

Bild 3

Tomcat anpassen

Command Prompt in C:\B2B\tomcat1\bin öffnen und service install tomcat1 –rename als Adminstrator ausführen -> tomcat service ist installiert (service remove fürs löschen ausführen)

Sollte es mit dem –rename Befehl Probleme geben, kann auch eine manuelle Änderung des Servicenamens durchgeführt werden:

  1. Im Verzeichnis C:\B2B\tomcat1 die Datei tomcat8.exe nach tomcat1.exe umbenennen

  2. Im gleichen Verzeichnis tomcat8w.exe nach tomcat1w.exe umbenennen

  3. C:\B2B\tomcat1\bin\service.bat editieren: überall tomcat8 durch tomcat1 ersetzen

  4. Command Prompt in C:\B2B\tomcat1\bin öffnen und service install als Adminstrator ausführen

Bei Problemen mit service install sollte man prüfen, ob alle Windows Patches eingespielt sind (http://www.microsoft.com/downloads/en/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&displaylang=en Microsoft Knowlege Base kb973544) und $JAVA_HOME gesetzt ist. Wichtig ist auch, dass der Befehl als Administrator ausgeführt wird

Nun die graphische Oberfläche C:\B2B\tomcat\bin\tomcat1w.exe als Adminstrator aufrufen. Diese dient dem Administrieren und Parametrisieren des Tomcats.

Folgende Java Options sind erforderlich bei jeder B2B-Instanz:

-Dfile.encoding=ISO-8859-1 
-Dmail.smtp.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1" 
-Dmail.smtps.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1" 
-Dmail.pop3.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1" 
-Dmail.pop3s.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1" 
-Dmail.imap.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1" 
-Dmail.imaps.ssl.protocols="TLSv1.2 TLSv1.1 TLSv1"

Erklärung:

  • ISO-8859-1 ist als Systemencoding bei DB-Zugriffen, Auslesen der Emails etc. erforderlich.
  • Beim Senden und Empfangen von Emails über ein SSL/TLS-gesichertes Protokoll (STARTTLS, pop3s, smtps etc.) müssen sichere Algorithmen TLSv1.* freigeschaltet werden. Wenn diese Properties nicht gesetzt sind, können diese Protokolle unter Umständen nicht benutzt werden. Selbst wenn sichere Protokolle aktuell nicht benutzt werden, sollten diese Properties trotzdem gesetzt werden, um Probleme in der Zukunft zu vermeiden.

OPTIONAL (nur wenn DebugMode)

-Xdebug
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1091

Hier werden nun verschiedene Einstellungen vorgenommen.

Im Reiter „Java“ werden die oben unter „Java Options“ angegebenen Optionen eingetragen. Wenn bereits Optionen vorhanden sind, können die neuen Optionen unten angehängt werden. Die Memory Pool Einstellungen sollten angepasst werden. Bei „Maximum memory pool“ sollte man mindestens 1024 MB vergeben. In der Option –Xrunjdwp wird der Debug-Port unter address eingetragen (Im obigen Beispiel 1091).

In den Reitern „Startup“ und „Shutdown“ wird „Working Path“ auf C:\B2B\tomcat1 gesetzt.

Im Reiter „Logging“ sollte der Loglevel auf Error gesetzt werden um die Anzahl der Logeinträge zu verringern.

Nun kann man testen, ob Tomcat läuft: in tomcat1w.exe (unter General) auf Start klicken und mit einem Browser auf http://localhost:8080 gehen. Es muss folgende Tomcat Startseite erscheinen:

Wenn diese Seite erscheint kann man Tomcat wieder Stoppen (im Reiter „General“ auf „Stop“ klicken).

Anpassen des Node-Names über den System-Kontext

Es ist möglich den Node-Name eines Tomcat-Knotens über den System-Kontext bzw. die JAVA_OPTS zu setzen. Siehe dazu Knotennamen und Knotennummer.

Anpassung der Tomcat Konfigurationsdatei server.xml

Die Datei C:\B2B\tomcat1\conf\server.xml in einem Editor öffnen. Um die Datei übersichtlicher zu gestalten können alle Kommentare entfernt werden. Hier werden die verwendeten Ports konfiguriert, die Benutzerdatenbank eingerichtet (hier wird die Datenbank von B2B verwendet) und das Hot Deployment deaktiviert.

Schritt 1: Server Port (für Shutdown)

Schritt 2: „Browser Port“

Schritt 3: Reverse Proxy Port

Schritt 4: Um die Benutzerdatenbank von B2B zu nutzen muss UserDatabaseRealm auskommentiert und dafür DataSourceRealm eingefügt werden.

Schritt 5: Hot Deployment deaktivieren.

server.xml

<?xml version="1.0" encoding="utf-8"?>
<Server port="9005" shutdown="SHUTDOWN">
	<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
	<Listener className="org.apache.catalina.core.JasperListener"/>
	<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
	<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
	<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
	<GlobalNamingResources>
		<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>
	<Service name="Catalina">
		<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
		<Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/>
		<Engine name="Catalina" defaultHost="localhost">
			<Realm className="org.apache.catalina.realm.LockOutRealm">
			<!--    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                       resourceName="UserDatabase"/>-->
			<Realm className="org.apache.catalina.realm.DataSourceRealm" 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.MessageDigestCredentialHandler" algorithm="sha-512"/>
			</Realm>
			<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">
				<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"
					   pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
			</Host>
		</Engine>
	</Service>
</Server>

Die gezeigte Konfiguration für Realm gilt für Tomcat 7, für Tomcat 8 und höher, siehe die Konfiguration hier.

Deployment und Konfiguration von B2B

Die Datei b2bbp-engine.war nach C:\B2B\tomcat1\webapps kopieren. Danach Tomcat starten. Es sollte ein Ordner C: \B2B\tomcat1\conf\Catalina\localhost existieren. Nun wird die Datei C:\B2B\tomcat1\conf\Catalina\localhost\b2bbp-engine.xml entweder von Hand angelegt oder eine bereits vorhandene Datei angepasst. Am wichtigsten sind username und password. Hier werden die Logindaten des Datenbankbenutzers eingetragen. Jedoch sollten auch die Attribute driverClassName und url stimmen, welche die Treiberklasse und die Datenbank URL (inklusive Datenbankname) angeben.

Beispiel für Tomcat 8:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/b2bbp-engine" reloadable="false" cachingAllowed="true" crossContext="true">
		<Resource name="jdbc/b2bbp"
			auth="Container"
			type="javax.sql.DataSource"
			driverClassName="oracle.jdbc.OracleDriver"
			url="jdbc:oracle:thin:@localhost:1521:XE"
			username="admin"
			password="b2bbp"
			maxTotal="50"
			maxIdle="10"
			maxWaitMillis="30000"
			removeAbandoned="false"
		/>
</Context>

In der Datei C:\B2B\tomcat1\conf\Catalina\localhost\manager.xml muss die gleiche Resource-Definition angegeben werden.

Automatischen Redirect einrichten

Die Dateien index.html und favicon.ico nach C:\B2B\tomcat1\webapps\ROOT kopieren. Vorhandene Dateien können ersetzt werden.

Installation der Datenbank Treiber

Als nächstes werden die Datenbanktreiber (z.b. ojdbc6.jar für Oracle) nach C:\B2B\tomcat1\lib kopiert.

Bibliothen mit Betriebsystemabhängigkeit: z.B. JCO und Oracle < 11g

Ordner C:\B2B\tomcat_all\os_libs anlegen und JCO- sowie Treiberdateien dorthin kopieren. (Jar Files und DLLs)

  • Ordner in $PATH aufnehmen

  • Classpath anpassen (da DLL- und JAR-Dateien im gleichen Ordner liegen müssen) über tomcat1w.exe -> Java -> Classpath dort die JAR-Datei angeben.

Datenbanktabellen erstellen

Nun werden die DB Skripte ausgeführt (das passende Skript für die jeweilige DB nehmen): db.sql und index.sql. Je nach Datenbank kann es auch nur eine Datei sein (z.B. Derby.txt )

Mit installiertem und freigeschaltetem DBVisualizer kann man direkt auf die SQL-Dateien doppelt klicken. Daraufhin öffnet sich der SQL Commander des DBVisualizer und lädt die Datei. Mit einem Klick auf den grünen Pfeil werden die Datenbanktabellen erstellt.

B2B Admin anlegen

Um den B2B Admin anzulegen, wird das Skript b2b-admin.sql (wie bei „Datenbanktabellen erstellen“) ausgeführt. Dieses legt den Benutzer admin mit dem Password b2bbp an. Zusätzlich wird die Rolle admins inklusive eines Berechtigungsobjekts zum Aktivieren des Customizing Uploade Mechanismus eingerichtet. Schließlich werden dem Benutzer admin die Rollen b2bbp und admins zugewiesen.

insert into B2BBP_ADM_ACCOUNT (USERID, PASSWORD, FIRSTNAME, LASTNAME, EMAIL, ORGANIZATION) values ('admin', 'ddccb7c235da2ae70e00d39e31e434e71f41f6ebc06a4566a5b7270dcf3ca9b46f909c8ad04ef42c6a7cfc5ff5d45a22a73ec050f74fe0c7040bc75a99a903a5', 'b2b', 'admin', null, null);
insert into B2BBP_ADM_ROLE_ATTRIBUTE (ROLEATTRIBUTEID, ROLEATTRIBUTEVALUE) values ('EnableUploadCustomizing', 'Override={view=GlobalPropertyPanelView,type=SetProperty,target=customizingTransfer,name=visible,value=true}');
insert into B2BBP_ADM_ROLE (ROLEID, ROLEATTRIBUTEID, DESCRIPTION) values ('admins', 'EnableUploadCustomizing', null);
insert into B2BBP_ADM_USER (USERID, ROLEID, DESCRIPTION) values ('admin', 'admins', null);
insert into B2BBP_ADM_USER (USERID, ROLEID, DESCRIPTION) values ('admin', 'b2bbp', null);

B2B Installation testen

C:\B2B\tomcat1\bin\tomcat1w.exe starten und unter dem Reiter „General“ auf Start klicken. Im Browser auf http://localhost:9080 navigieren. Nun sollte sich ein Login-Fenster öffnen. Username ist admin und das Password ist b2bbp. Nach dem anmelden werden ein paar Fehler gemeldet, da noch Extensions fehlen. Dies ist nicht weiter schlimm und wird während des Customizing angepasst.

Knotennummer zuweisen

Jeder B2B-Knoten soll eine eigene Nummer bekommen. Über diese Nummern wird unter anderem konfiguriert, welche Services auf welchen Knoten laufen. Die Nummer wird auch bei der Generierung von eindeutigen Referenznummern verwendet

Beim ersten Start des Knotens wird automatisch eine Global Property angelegt, deren Name aus dem PC-Namen und dem Pfad zum Tomcat besteht, etwa ASYDECGNNB00999ctomcat1webappsb2bbp-engine. Der Wert wird so aussehen: 99,LAST STARTED AT: 14.09.2021 at 16:22:52. Das “99” vorne ist die automatisch vergebene Nummer dieses Knotens. Sie soll auf eine vernünftige Nummer geändert werden, z. B. “1”. Dafür kann die Global Property in der Oberfläche manuell bearbeitet werden. Nach der Änderung der Knotennummer muss der Knoten neu gestartet werden.

“ASYDECGNNB00999ctomcat1webappsb2bbp-engine” ist der automatisch generierte Knotenname. Dieser Knotenname kann auch konfigurativ vergeben werden, siehe dazu den Abschnitt Anpassen des Node-Names über den System-Kontext

Die Nummern aller Knoten sollten dieselbe Länge haben, z. B. 1, 2, 3 oder 11, 12, 21, 22… Ansonsten können bei der Generierung von Referenznummern Duplikate erstellt werden.

Danach kann konfiguriert werden, welche Services auf jedem Knoten laufen sollen. Dafür müssen Global Properties NODE_<Knotennummer> erstellt werden. Zum Beispiel, für den Knoten 12 heißt die Global Property NODE_12. Als Wert dieser Global Properties werden die Ids der Services aufgezählt, z. B. “MAIL_IN,Index,queue”. Es sind nur die aktiven Services und die Scheduler einzutragen.

Weitere Tomcat Cluster Knoten einrichten

Die B2B-Anwendung kann in einem Cluster betrieben werden, der aus mehreren Tomcat-Knoten besteht. Die Knoten greifen dabei auf dieselbe Datenbank zu. Die Knoten reden nicht direkt miteinander. Änderungen, die durch einen Knoten gemacht wurden, werden nach einer kurzen Zeit für die anderen Knoten sichtbar. Das erfolgt über den internen Mechanismus der “ClusterCommunication”. Normalerweise läuft sie automatisch ab und erfordert keine Installation oder Konfiguration.

Knoten können unabhängig voneinander gestoppt, gestartet und aktualisiert werden.

Diese Services können parallel auf mehreren Knoten betrieben werden: Crawler, QueueService, ArchiveJob, IndexService. Bei anderen sollte im Einzelfall nachgeschaut werden, ob sie dafür geeignet sind.

Für die Einrichtung eines neuen Knotens sollen folgende Schritte ausgeführt werden:

  • Den Tomcat-Ordner duplizieren
  • Andere Ports in conf/server.xml vergeben
  • Gegebenenfalls die Start-Skripte anpassen, damit sie auf den neuen Tomcat zeigen
  • Den neuen Tomcat starten
  • Dem neuen Knoten eine andere Knotennummer zuweisen (siehe vorherigen Abschnitt Knotennummer zuweisen)
  • die neue GlobalProperty NODE_XX mit der neu vergebenen Nummer anlegen und Services zuordnen, die auf diesem Knoten laufen sollen
  • Den Knoten neu starten, damit die gemachten Änderungen greifen

Bei der Installation unter Windows sollen zu Anfang diese Schritte ausgeführt werden, hier als Beispiel für die Anlage des Knoten “2”:

  • C:\b2b\tomcat1 nach C:\b2b\tomcat2 kopieren

  • C:\b2b\tomcat2\conf\server.xml - Ports anpassen

  • C:\b2b\tomcat2\bin\tomcat1w.exe nach C:\b2b\tomcat2\bin\tomcat2w.exe umbenennen

  • C:\b2b\tomcat2\bin\service.bat - tomcat1 überall durch tomcat2 ersetzen

  • CMD in C:\b2b\tomcat2\bin öffnen und service install aufrufen

  • C:\b2b\tomcat2\bin\tomcat2w.exe aufrufen und Parameter analog tomcat1 anpassen

  • weiter mit der Zuweisung der Knotennummer fortfahren

Redeployment von B2B

  • Tomcat Stoppen

  • Komplettes B2B Redeployment: kopieren der b2bbp-engine.war nach C:\B2B\tomcat1\webapps und löschen des Ordners C: \B2B\tomcat1\webapps\b2bbp-engine. Danach tomcat starten

oder

  • Redeployment einer JAR-Datei (ein Teil von B2B): kopieren der JAR-Datei nach C:\B2B\tomcat1\webapps\b2bbp-engine\WEB-INF\lib

In beiden Fällen danach Tomcat neu starten.

Übersicht über die Datenbanktabellen

Hier sind die Bewegungsdaten gespeichert. Löschen der B2BBP_DATA_MESSAGE Tabelle führt zum Löschen der abhängigen Tabellen

In der Action Registry werden die Actions gespeichert. In der Action_Property_Mon Tabelle werden die Details verwendet. Die Channel Tabellen referenziert auf die Action Registry

Hier werden die Servcies gespeichert

B2BBP_ADM_ACCOUNT

  • Hier sind die User/Passwortinformationen für DB basierte Benutzerverwaltung gespeichert

B2BBP_ADM_ACTION_PROPERTY

  • Wird nicht benutzt

B2BBP_ADM_ACTION_REPOSITORY

  • Wird nicht benutzt

B2BBP_ADM_CHANNEL

  • Channels

B2BBP_ADM_CONTENT

  • Content

B2BBP_ADM_EXTENSION

  • Extensions

B2BBP_ADM_GLOBAL_PROPERTY

  • Global Properties

B2BBP_ADM_QUEUE

  • Queue Tabelle

B2BBP_ADM_ROLE

  • Rollen

B2BBP_ADM_ROLE_ATTRIBUTE

  • Berechtigungsobjekte

B2BBP_ADM_USER

  • Zuordnung von Usern zu Rollen

B2BBP_ANALYTICS_MEMORY

  • Für den Support

B2BBP_ANALYTICS_THREAD

  • Für den Support

B2BBP_CCM_SCHEDULED_RESULT

  • CCM

B2BBP_DATA_CLEARING

  • Clearing Status Details

B2BBP_DATA_CLEARING2

  • Clearing Status Details CCM

B2BBP_DATA_SYSTEM_ERROR

  • Systemfehler

B2BBP_DATA_INBOX

  • CCM

B2BBP_DATA_LOCKTAB

  • Sperrtabelle

B2BBP_DATA_MAIL_MONITOR

  • CCM

B2BBP_INDEX_SYNC

  • INDEX

B3P_ADM_SYSTEMMESSAGEHISTORY

  • Systemnachrichten

B3P_ADM_SYSTEMMESSAGES

  • Systemnachrichten

B3P_DATA_STATES_HISTORY

  • Systemnachrichten
View Me   Edit Me