Vorwort
Um bei der Konfiguration etwas Zeit zu sparen und auch in Zukunft Änderungen zu erleichtern wäre es sinnvoll die SQL_ENV für Mandantensysteme auf zu splitten.
Aufteilung
Die SQL_ENV würde sich in 3 Bereiche aufteilen
Hauptbereich
In dem Hauptbereich bleibt der meiste Teil der Konfiguration. Die Mandantenspezifischen Variablen werden entfernt und selten geänderte Variablen wie die Modulpfade werden ausgelagert. Vorteil ist bei z.B. Änderung der Java Version muss nur die eine SQL_ENV geändert werden und nicht jede Mandanten ENV.
Mandanten ENV
In der Mandanten ENV kommen nur die Mandantenspezifischen Variablen rein. Das sind in der Regel nur 3-5 Variablen. Damit ist diese ENV sehr übersichtlich und kann auch schnell für einen weiteren Mandanten dupliziert werden. Aus der Mandanten ENV wird dann die SQL_ENV geladen.
Modulpfade
Die Modulpfade werden in den seltensten Fällen angepasst. Da dieser Bereich recht groß ist bekommt er eine eigene Datei. Der Vorteil ist, dass die häufiger zu bearbeitende SQL_ENV wesentlich übersichtlicher wird. Die zu erstellende Datei nennen wir SQL_ENV_MODULE. Diese ENV wird dann am Ende von der SQL_ENV geladen.
Beispiel Code
SQL_ENV.MANDANT
#!/bin/sh umask 066 #In SuperX-FUll-Release: export SUPERX_DIR=/home/superx export WEBAPP=$SUPERX_DIR/webserver/tomcat/webapps/superx # Mandantenspezifisch: export MANDANTENID=MANDANT export DB_PROPERTIES=$WEBAPP/WEB-INF/db_MANDANT.properties export DBNAME=mandant . $SUPERX_DIR/db/bin/SQL_ENV
SQL_ENV
#!/bin/sh umask 066 #In SuperX-FUll-Release: export SUPERX_DIR=/home/superx export WEBAPP=$SUPERX_DIR/webserver/tomcat/webapps/superx export JAVA_HOME=/usr/lib/java export JRE_HOME=$JAVA_HOME export SUPERX_VERSION=4.3 export CATALINA_OPTS="-Xms100M -Xmx1500M -Djava.awt.headless=true -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false" export DATABASE=POSTGRES #export SX_CLIENT=jdbc export SX_CLIENT=psql #export SX_CLIENT=dbaccess #export LANG=de_DE@euro export LANG=de_DE.utf8 case $SX_CLIENT in psql) export PGDATESTYLE=German export O_DESCR=$SUPERX_DIR/db/conf/unldescr_postgres_copy.xml export PGPORT=5432 export PGHOST=dbserver PGPATH=/usr/local/pgsql export PGDATA=$PGPATH/data case $PATH in *"$PGPATH"/bin*) ;; *) export PATH=$PATH:"$PGPATH"/bin #echo "PATH erweitert" ;; esac ;; dbaccess) INFORMIXDIR=/home/informix; export INFORMIXDIR INFORMIXSERVER=superx_host; export INFORMIXSERVER ONCONFIG=onconfig.superx; export ONCONFIG INF_BIN=$INFORMIXDIR/bin; export INF_BIN DBMONEY=. ; export DBMONEY DBDATE=DMY4. ; export DBDATE TERMCAP=${INFORMIXDIR}/etc/termcap; export TERMCAP #CLIENT_LOCALE=de_DE.8859-1; export CLIENT_LOCALE #SERVER_LOCALE=de_DE.8859-1; export SERVER_LOCALE #DB_LOCALE=de_DE.8859-1; export DB_LOCALE # GL_DATETIME='%X'; export GL_DATETIME GL_DATETIME='%d.%m.%Y %T'; export GL_DATETIME #Prüfen ob der PATH erweitert werden muss case $PATH in *$INF_BIN*) ;; *) export PATH=$PATH:$INF_BIN #echo "PATH erweitert" ;; esac #Für erweitertes Logging einschalten: #DBACCESS_PARAMS="-e" #export DBACCESS_PARAMS ;; esac #Mailprogramm angeben z.B. mail oder mutt #MAILPROG=mutt export MAILPROG=mail export ERRORMAIL=mail@server.de export LOGMAIL=$ERRORMAIL #-------------------------------------------------------- #ab hier muss man normalerweise nichts mehr ändern #Die Umgebungsvariablen ab hier müssen in den meisten Fällen nicht angepasst werden: #-------------------------------------------------------- DATABASE_ABBR="" case $DATABASE in POSTGRES) DATABASE_ABBR="pg";export DATABASE_ABBR ;; INFORMIX) DATABASE_ABBR="ids";export DATABASE_ABBR ;; HSQLDB) DATABASE_ABBR="hsql";export DATABASE_ABBR ;; esac if [ "$DATABASE_ABBR" = "" ] then echo "Nicht unterstützte Datenbank: $DATABASE" fi export LOGGER_PROPERTIES=$SUPERX_DIR/db/conf/logging.properties LIB_PATH=$WEBAPP/WEB-INF/lib export JDBC_CLASSPATH="$LIB_PATH/ant.jar" ; for i in `ls $LIB_PATH/*.jar` ; do JDBC_CLASSPATH=$JDBC_CLASSPATH:$i ; done ; XML_CLASSPATH=$JDBC_CLASSPATH export DBFORMS_CLASSPATH=$XML_CLASSPATH:$LIB_PATH/dbforms2.5.jar CYGWIN=false case "`uname`" in CYGWIN*) CYGWIN=true;; esac export CYGWIN #The standard Desciptor for unload-Files is Informix Load: #Details zur Arbeitsweise in dieser Datei: I_DESCR=$SUPERX_DIR/db/conf/unldescr_informix_load.xml export I_DESCR # For Cygwin, switch paths to Windows format before running java if $CYGWIN; then JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` export JAVA_HOME DB_PROPERTIES=`cygpath --path --windows "$DB_PROPERTIES"` export B_PROPERTIES XML_CLASSPATH=`cygpath --path --windows "$XML_CLASSPATH"` export XML_CLASSPATH TOMCAT_LIB=`cygpath --path --windows "$TOMCAT_LIB"` export TOMCAT_LIB JDBC_CLASSPATH=`cygpath --path --windows "$JDBC_CLASSPATH"` export JDBC_CLASSPATH LOGGER_PROPERTIES=`cygpath --path --windows "$LOGGER_PROPERTIES"` export LOGGER_PROPERTIES O_DESCR=`cygpath --path --windows "$O_DESCR"` export LOGGER_PROPERTIES I_DESCR=`cygpath --path --windows "$I_DESCR"` export I_DESCR fi #Rechnername (DNS), beim Betrieb von SuperX auf 2 Rechnern RECHNER=server; export RECHNER #Bitte dies nicht ändern: DBDELIMITER="^" ; export DBDELIMITER #Der Datenbankname für die Shellscript in db/bin #DBNAME=mandant; export DBNAME if [ "$TERM" = "" ] then TERM=vt100 ; export TERM fi SUPERX_MODULE=$SUPERX_DIR/db/module SUPERX_ROHDATEN=rohdaten/$MANDANTENID #Prüfen ob der PATH erweitert werden muss case $PATH in *$SUPERX_DIR/db/bin:.*) ;; *) export PATH=$PATH:$SUPERX_DIR/db/bin:. #echo "PATH erweitert" ;; esac PATH=$JAVA_HOME/bin:$PATH export PATH CLASSPATH=. export CLASSPATH #Module Liste: #Hier werden die zu verwendende Joolap Module aufgelistet. #Nur den Modulnamen ohne joolap oder joolap_s eintragen. #Alles in Kleinbuchstaben export JOOLAP_INSTALLED_MODULES_ITEMS="kern sos" #Achtung, die nächsten 4 Zeilen dürfen nicht geändert werden declare -a JOOLAP_INSTALLED_MODULES=(`echo ${JOOLAP_INSTALLED_MODULES_ITEMS[*]}`) JOOLAP_INSTALLED_MODULES_LIST="" for i in ${JOOLAP_INSTALLED_MODULES[@]} ; do JOOLAP_INSTALLED_MODULES_LIST="$JOOLAP_INSTALLED_MODULES_LIST"_$i ; done export JOOLAP_INSTALLED_MODULES_LIST TOMCAT=/home/superx/webserver/tomcat/bin export TOMCAT . $SUPERX_DIR/db/bin/SQL_ENV_MODULE
SQL_ENV_MODULE
#!/bin/sh SVA_PFAD=$SUPERX_MODULE/sva; export SVA_PFAD SVA_ERRORDAT=$SVA_PFAD/sva_load.err; export SVA_ERRORDAT SVA_LOAD_PFAD=$SVA_PFAD/$SUPERX_ROHDATEN; export SVA_LOAD_PFAD SVA_ERRORMAIL=$ERRORMAIL; export SVA_ERRORMAIL SVA_LOGMAIL=$LOGMAIL; export SVA_LOGMAIL SOS_PFAD=$SUPERX_MODULE/sos; export SOS_PFAD SOS_ERRORDAT=$SOS_PFAD/sos_update.err; export SOS_ERRORDAT SOS_LOAD_PFAD=$SOS_PFAD/$SUPERX_ROHDATEN; export SOS_LOAD_PFAD SOS_ERRORMAIL=$ERRORMAIL; export SOS_ERRORMAIL SOS_LOGMAIL=$LOGMAIL; export SOS_LOGMAIL FIN_PFAD=$SUPERX_MODULE/fin; export FIN_PFAD FIN_ERRORDAT=$FIN_PFAD/fin_update.err; export FIN_ERRORDAT FIN_LOAD_PFAD=$FIN_PFAD/$SUPERX_ROHDATEN; export FIN_LOAD_PFAD FIN_ERRORMAIL=$ERRORMAIL; export FIN_ERRORMAIL FIN_LOGMAIL=$LOGMAIL; export FIN_LOGMAIL BAU_PFAD=$SUPERX_MODULE/bau; export BAU_PFAD BAU_ERRORDAT=$BAU_PFAD/bau_load.err; export BAU_ERRORDAT BAU_LOAD_PFAD=$BAU_PFAD/$SUPERX_ROHDATEN; export BAU_LOAD_PFAD BAU_ERRORMAIL=$ERRORMAIL; export BAU_ERRORMAIL BAU_LOGMAIL=$LOGMAIL; export BAU_LOGMAIL COB_PFAD=$SUPERX_MODULE/cob; export COB_PFAD COB_ERRORDAT=$COB_PFAD/cob_update.err; export COB_ERRORDAT COB_LOAD_PFAD=$COB_PFAD/$SUPERX_ROHDATEN; export COB_LOAD_PFAD COB_ERRORMAIL=$ERRORMAIL; export COB_ERRORMAIL COB_LOGMAIL=$LOGMAIL; export COB_LOGMAIL GANG_PFAD=$SUPERX_MODULE/gang; export GANG_PFAD GANG_ERRORDAT=$GANG_PFAD/gang_update.err; export GANG_ERRORDAT #Hier stehen die Rohdaten (im Unterverzeichnis unl) GANG_LOAD_PFAD=$GANG_PFAD/$SUPERX_ROHDATEN; export GANG_LOAD_PFAD GANG_ERRORMAIL=$ERRORMAIL; export GANG_ERRORMAIL GANG_LOGMAIL=$LOGMAIL; export GANG_LOGMAIL KENN_PFAD=$SUPERX_MODULE/kenn; export KENN_PFAD KENN_ERRORDAT=$KENN_PFAD/kenn_update.err; export KENN_ERRORDAT KENN_LOAD_PFAD=$KENN_PFAD/$SUPERX_ROHDATEN; export KENN_LOAD_PFAD KENN_ERRORMAIL=$ERRORMAIL; export KENN_ERRORMAIL KENN_LOGMAIL=$LOGMAIL; export KENN_LOGMAIL ERFOLG_PFAD=$SUPERX_MODULE/erfolg; export ERFOLG_PFAD ERFOLG_ERRORDAT=$ERFOLG_PFAD/erfolg_update.err; export ERFOLG_ERRORDAT ERFOLG_LOAD_PFAD=$ERFOLG_PFAD/$SUPERX_ROHDATEN; export ERFOLG_LOAD_PFAD ERFOLG_ERRORMAIL=$ERRORMAIL; export ERFOLG_ERRORMAIL ERFOLG_LOGMAIL=$LOGMAIL; export ERFOLG_LOGMAIL ICE_PFAD=$SUPERX_MODULE/ice; export ICE_PFAD ICE_ERRORDAT=$ICE_PFAD/ice_update.err; export ICE_ERRORDAT ICE_LOAD_PFAD=$ICE_PFAD/$SUPERX_ROHDATEN; export ICE_LOAD_PFAD ICE_ERRORMAIL=$ERRORMAIL; export ICE_ERRORMAIL ICE_LOGMAIL=$LOGMAIL; export ICE_LOGMAIL JOOLAP_KERN_S_PFAD=$SUPERX_MODULE/joolap_kern_s; export JOOLAP_KERN_S_PFAD JOOLAP_KERN_S_ERRORDAT=joolap_kern_s_update.err export JOOLAP_KERN_S_ERRORDAT JOOLAP_KERN_S_BACKUP="false" export JOOLAP_KERN_S_BACKUP JOOLAP_SOS_S_PFAD=$SUPERX_MODULE/joolap_sos_s; export JOOLAP_SOS_S_PFAD JOOLAP_SOS_S_ERRORDAT=$JOOLAP_SOS_S_PFAD/joolap_sos_s_update.err; export JOOLAP_SOS_S_ERRORDAT JOOLAP_SOS_S_ERRORMAIL=$SOS_ERRORMAIL #Standard-Mailadr. export JOOLAP_SOS_S_ERRORMAIL JOOLAP_SOS_S_LOGMAIL=$SOS_LOGMAIL #Standard-Mailadr. export JOOLAP_SOS_S_LOGMAIL JOOLAP_SOS_S_BACKUP="false" export JOOLAP_SOS_S_BACKUP JOOLAP_SVA_S_PFAD=$SUPERX_MODULE/joolap_sva_s; export JOOLAP_SVA_S_PFAD JOOLAP_SVA_S_ERRORDAT=$JOOLAP_SVA_S_PFAD/joolap_sva_s_update.err; export JOOLAP_SVA_S_ERRORDAT JOOLAP_SVA_S_ERRORMAIL=$SVA_ERRORMAIL #Standard-Mailadr. export JOOLAP_SVA_S_ERRORMAIL JOOLAP_SVA_S_LOGMAIL=$SVA_LOGMAIL #Standard-Mailadr. export JOOLAP_SVA_S_LOGMAIL JOOLAP_SVA_S_BACKUP="false" export JOOLAP_SVA_S_BACKUP JOOLAP_COB_S_PFAD=$SUPERX_MODULE/joolap_cob_s; export JOOLAP_COB_S_PFAD JOOLAP_COB_S_ERRORDAT=joolap_cob_s_update.err export JOOLAP_COB_S_ERRORDAT JOOLAP_COB_S_BACKUP="false" export JOOLAP_COB_S_BACKUP JOOLAP_BAU_S_PFAD=$SUPERX_MODULE/joolap_bau_s; export JOOLAP_BAU_S_PFAD JOOLAP_BAU_S_ERRORDAT=$JOOLAP_BAU_S_PFAD/joolap_bau_s_update.err; export JOOLAP_BAU_S_ERRORDAT JOOLAP_BAU_S_ERRORMAIL=$BAU_ERRORMAIL #Standard-Mailadr. export JOOLAP_BAU_S_ERRORMAIL JOOLAP_BAU_S_LOGMAIL=$BAU_LOGMAIL #Standard-Mailadr. export JOOLAP_BAU_S_LOGMAIL JOOLAP_BAU_S_BACKUP="false" export JOOLAP_BAU_S_BACKUP ZUL_PFAD=$SUPERX_MODULE/zul; export ZUL_PFAD ZUL_ERRORDAT=$ZUL_PFAD/zul_update.err; export ZUL_ERRORDAT #Hier stehen die Rohdaten (im Unterverzeichnis unl) ZUL_LOAD_PFAD=$ZUL_PFAD/$SUPERX_ROHDATEN; export ZUL_LOAD_PFAD ZUL_ERRORMAIL=$ERRORMAIL; export ZUL_ERRORMAIL ZUL_LOGMAIL=$LOGMAIL; export ZUL_LOGMAIL IVS_PFAD=$SUPERX_MODULE/ivs; export IVS_PFAD IVS_ERRORDAT=$IVS_PFAD/ivs_update.err; export IVS_ERRORDAT #Hier stehen die Rohdaten (im Unterverzeichnis unl) IVS_LOAD_PFAD=$IVS_PFAD/$SUPERX_ROHDATEN; export IVS_LOAD_PFAD IVS_ERRORMAIL=$ERRORMAIL; export IVS_ERRORMAIL IVS_LOGMAIL=$LOGMAIL; export IVS_LOGMAIL