Middels het bestand site.properties in de WEB-INF map van de webapplicatiemap kan de applicatie geconfigureerd worden:
•De verbindingen met Oracle RDBMS en het ERP-systeem.
•De meertaligheid.
•De verbinding met de gebruikersgegevens (gebruikersnamen en wachtwoorden)
•Andere kleine aanpassingen.
Deze aanpassingen mogen alleen door gekwalificeerde consultants van Invantive Software BV doorgevoerd worden, aangezien ze een directe invloed hebben op de kern van de applicatie.
De werkwijze voor aanpassingen bestaat uit:
•Stoppen webserver.
•Wijzigen site.properties.
•Starten webserver.
•De wijzigingen zijn direct effectief als een gebruiker zich aanmeldt.
Voor meer informatie over de functionaliteit kun je de onderstaande kopie raadplegen.
#logger properties @0-029F305D
logfile=c:\\temp\\bubs3.log
logpriority=debug
# Logsize in Kb. File is truncated and written after this size.
logsize=1024000
#End logger properties
#url properties @0-E8A730F5
serverUrl=http://localhost/bubs3
securedUrl=/bubs3
#End url properties
#localization properties @0-0D67F023
encoding=utf-8
language=Netherlands
defaultDateFormat=dd-MM-yyyy
defaultBooleanFormat=Y;N
requestEncoding=utf-8
#End localization properties
#messages bundle @0-77F70051
messagesBundle=MessagesBundle
#End messages bundle
#file upload @0-215C2A9B
com.codecharge.util.upload.storage=memory
#End file upload
#body post processor class name @0-C5219FBD
bodyPostProcessor.className=com.codecharge.util.CcsBodyPostProcessor
#End body post processor class name
#template class name @0-8EA332EE
template.class.name=com.codecharge.template.CCSTemplate
#End template class name
#templateSource class name @0-840DD0B6
templateSource.class.name=com.codecharge.template.FileTemplateSource
#End templateSource class name
#templateParser class name @0-7F4F85C9
templateParser.class.name=com.codecharge.template.TemplateParser
#End templateParser class name
#templateFolder @0-52356875
templateFolder=
#End templateFolder
#styles settings @0-27E71411
useDynamicStyles=True
defaultStyle=Apricot
SSEnableQueryString=True
SSQueryStringName=style
SSEnableSession=True
SSSessionName=style
SSEnableCookie=False
SSCookieName=style
SSCookieExpired=365
#End styles settings
#defaultLocale @0-45E529E7
defaultLocale=nl
#End defaultLocale
#localeSwitching @0-02E16A18
useI18nFeatures=True
enableQueryString=true
queryStringName=locale
enableSession=true
sessionName=locale
languageSessionName=lang
enableCookie=false
cookieName=locale
cookieExpired=365
enableHTTPHeader=false
httpHeaderName=
#End localeSwitching
#authentication properties @0-045E17BF
authenticator.securityType=CCS
authenticator.factoryClassName=com.codecharge.util.CCSAuthenticatorFactory
authenticator.securityStorage=session
authenticator.inheritanceRights=False
authenticator.userIdFieldName=GBR_ID
authenticator.userIdVarName=UserID
authenticator.loginFieldName=GBR_AANMELD_CODE
authenticator.loginVarName=UserLogin
authenticator.passwordFieldName=GBR_WACHTWOORD
authenticator.connectionName=bubs_tomcat
authenticator.tableName=BUBS_GEBRUIKERS_V
#End authentication properties
#tags to lower case @0-0649DE20
tags.toLowerCase=false
#End tags to lower case
#Connection 'bubs_tomcat' properties @1-28E264C0
bubs_tomcat.name=bubs_tomcat
bubs_tomcat.driver=oracle.jdbc.driver.OracleDriver
bubs_tomcat.dbType=Oracle
bubs_tomcat.url=jdbc:oracle:thin:@localhost:1521:ORCL
bubs_tomcat.maxconn=250
bubs_tomcat.user=bubs_tomcat
bubs_tomcat.password=bubs_tomcat
bubs_tomcat.timeout=3600
bubs_tomcat.fieldLeftDelim="
bubs_tomcat.fieldRightDelim="
bubs_tomcat.dateLeftDelim='
bubs_tomcat.dateRightDelim='
bubs_tomcat.dbNameUppercase=True
bubs_tomcat.dateFormat=dd-MM-yyyy HH:mm
bubs_tomcat.booleanFormat=Y;N
bubs_tomcat.optimizeSQL=True
bubs_tomcat.sessionCommand0=ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI'
#End Connection 'bubs_tomcat' properties
#Connection 'bubs_exact' properties @2-444594F2
bubs_exact.name=bubs_exact
bubs_exact.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
bubs_exact.dbType=MSSQLServer
bubs_exact.url=jdbc:microsoft:sqlserver://localhost:21433
bubs_exact.maxconn=10
bubs_exact.user=bubs
bubs_exact.password=expbubs
bubs_exact.timeout=300
bubs_exact.fieldLeftDelim=[
bubs_exact.fieldRightDelim=]
bubs_exact.dateLeftDelim='
bubs_exact.dateRightDelim='
bubs_exact.dbNameUppercase=True
bubs_exact.dateFormat=yyyy-MM-dd HH:mm:ss
bubs_exact.booleanFormat=Y;N
bubs_exact.optimizeSQL=True
#End Connection 'bubs_exact' properties
De betekenis van de relevante instellingen is:
•logfile: via logfile kun je instellen op welke plek het logbestand aangemaakt moet worden. De gebruiker van het besturingssysteem waaronder de webserver uitgevoerd wordt, dient hier schrijfrechten te hebben.
•logpriority: via logpriority kun je instellen hoe gedetailleerd de webapplicatie zijn activiteiten moet vastleggen in het logbestand. Mogelijke waardes zijn ̒error̓, ̒warn̓, ̒info̓ en ̒debug̓. ̒Error̓ legt alleen foutmeldingen vast, terwijl de andere instellingen meer informatie vastleggen.
•logsize: de maximale omvang van het logbestand. Als deze grootte in Kb wordt overschreden, dan wordt het bestand verwijderd en opnieuw aangemaakt voor schrijven.
•serverUrl: de URL die de basis vormt voor normaal gebruik via http van de webapplicatie. Een scherm-URL wordt samengesteld door de waarde van ‘serverUrl’ plus bijvoorbeeld ‘bubs_odt_all.do’ voor het opdrachten scherm.
•securedUrl: de Url die de basis vormt voor het aanmelden via https op de webapplicatie.
•encoding: de tekenset die gebruikt wordt om de gegevens weer te geven in de browser. ‘Utf-8’ is de meest flexibele tekenset, waarin voor alle voorkomende talen alle tekens gelijktijdig aanwezig zijn.
•requestEncoding: de tekenset die gebruikt wordt om de gegevens te verwerken die van de browser ontvangen zijn.
•language: de taal die gebruikt wordt indien er geen gebruikers-specifieke taal opgegeven is. Deze taal wordt dus normaliter gebruikt voor bijvoorbeeld het aanmeldscherm.
•defaultLocale: de geografische regio-instelling die gebruikt wordt indien er geen gebruikers-specifieke regio opgegeven is. Deze regio-instelling wordt dus normaliter gebruikt voor bijvoorbeeld het aanmeldscherm.
De zogenaamde ‘authenticator’ is de module die valideert of gebruikers daadwerkelijk de persoon zijn die ze pretenderen te zijn. Standaard wordt gebruik gemaakt van de gebruikersnamen en wachtwoorden zoals ze vastgelegd zijn in de applicatie zelf (zie Personen). Er kan ook gekozen worden voor een afwijkend authenticatiemechanisme, bijvoorbeeld door het gebruik van LDAP of Microsoft Active Directory.
De betekenis van de instellingen die beginnen met ‘authenticator.’ is:
•authenticator.securityType: moet altijd op ‘CCS’ staan.
•authenticator.factoryClassName: de Java component die gebruikt wordt om de authenticatie uit te voeren. Voor de ingebouwde authenticatie op basis van de gebruikersnamen in het scherm Personen moet de waarde ‘com.codecharge.util.CCSAuthenticatorFactory’ ingevuld worden. Voor LDAP moet de waarde ‘com.codecharge.util.LDAPAuthenticatorFactory’ ingevuld worden.
•authenticator.userIdVarName: de naam van de sessievariabele die de unieke ID van de gebruiker vasthoudt zoals vastgelegd in ‘authenticator.userIdFieldName’. Altijd ‘UserID’.
•authenticator.loginVarName: de naam van de sessievariabele die de gebruikersnaam van de gebruiker vasthoudt zoals vastgelegd in ‘authenticator.loginFieldName’. Altijd ‘UserLogin’.
•authenticator.securityStorage: de locatie waar de beveiligingscredentials worden vastgehouden. Altijd ‘session’.
•authenticator.inheritanceRights: een verwijzing of rechten overgeërfd moeten worden van lagere autorisatieniveaus of niet. Deze instelling moet altijd de waarde ‘False’ hebben.
•authenticator.ldap.external.suffix: alleen voor LDAP. De tak waar de organisatie zijn authenticatiegegevens onder registreert en waar onder gezocht wordt, bijvoorbeeld ‘OU=MyBusiness,DC=invantive,DC=local’.
•authenticator.ldap.external.server: alleen voor LDAP. Het adres van de LDAP-server, bijvoorbeeld ‘192.168.172.11’.
•authenticator.ldap.external.protocol: alleen voor LDAP. Het gebruikte LDAP-protocol, bijvoorbeeld ‘ldap’ of ‘ldaps’.
•authenticator.ldap.external.useruniqueattribute: alleen voor LDAP. Het attribuut dat over de hele organisatie uniek aangeeft welke gebruiker het is. De waarde hiervan moet ook staan in de gebruikersregistratie van Invantive Estate in het veld ‘Aanmeld Code’. Een voorbeeld is ‘userPrincipalName’.
•authenticator.ldap.external.port: alleen voor LDAP. Het poortnummer op de LDAP-server, bijvoorbeeld 389 voor LDAP of 636 voor LDAPS.
•authenticator.ldap.external.fillinpatternlogin: alleen voor LDAP. Het LDAP-querypatroon waar de gebruikersnaam in wordt ingevuld om een gebruiker aan te melden bij LDAP, als er tenminste geen van de karakters in ‘fullrecognition’ voorkomt in de gebruikersnaam. De tekst ‘:account’ wordt vervangen door de ingegeven gebruikersnaam. Een voorbeeld is ‘cn=:account,OU=SBSUsers,OU=Users,OU=MyBusiness,DN=invantive,DN=local’.
•authenticator.ldap.external.fullrecognition: alleen voor LDAP. De waarde in ‘authenticator.ldap.fillinpatternlogin’ wordt gebruikt in combinatie met de waarde die staat in het LDAP-attribuut zoals ingevuld in ‘authenticator.ldap.useruniqueattribute’. Echter, indien de waarde in het LDAP-attribuut zoals ingevuld in ‘authenticator.ldap.useruniqueattribute’ een van de tekens bevat die in deze tekenreeks ingevuld is, wordt uitsluitend de waarde van het LDAP-attribuut verstuurd naar de server en wordt de waarde in ‘authenticator.ldap.fillinpatternlogin’ niet gebruikt. Een voorbeeld is het karakter ‘@’.
•authenticator.ldap.external.fillinpatternuniqueattribute: alleen voor LDAP. Het patroon waar de gebruikersnaam in wordt ingevuld om te zoeken naar gegevens van de gebruiker zoals het e-mailadres, als er tenminste geen van de karakters in fullrecognition voorkomt in de gebruikersnaam. De tekst ‘:account’ wordt vervangen door de ingegeven gebruikersnaam. Een voorbeeld is ‘:account@invantive.local’
•.authenticator.ldap.external.systemaccount: alleen voor LDAP. Het account waar de gebruiker ‘system’ mee geauthenticeerd moet worden. Een voorbeeld is ‘Administrator’. Let op: dit account wordt alleen gebruikt voor de authenticatie binnen de LDAP gateway. Je dient je altijd als gebruiker ‘system’ aan te melden.
•authenticator.ldap.local.try: indicator of - als de LDAP-authenticatie niet geslaagd is - zal ook een poging gedaan moeten worden om de gebruiker met het ingevoerde wachtwoord te authenticeren tegen de lokale gebruikersgegevens (identiek aan ‘com.codecharge.util.CCSAuthenticatorFactory’). Dit wordt incidenteel gebruikt om snel complexe testscenario's voor werkstromen te realiseren.
•authenticator.ldap.local.validationSql: SQL-statement om de lokale authenticatie te controleren. De query moet een rij teruggeven als gevonden en anders niks. Het wachtwoord wordt ingevuld voor alle voorkomens van :password en de gebruikersnaam voor alle voorkomens van :account.
•authenticator.ldap.local.regexFilter: reguliere expressie om te bepalen voor welke gebruikeraanmeldcodes lokale authenticatie is toegestaan, bijvoorbeeld ‘.*’ om dit toe te staan voor alle gebruikers.
•authenticator.tableName: alleen voor ingebouwde gebruikersauthenticatie. De naam van de tabel of views die de gebruikersgegevens bevat die gebruikt worden voor authenticatie. Altijd ‘BUBS_GEBRUIKERS_V’.
•authenticator.connectionName: alleen voor ingebouwde gebruikersauthenticatie. De naam van de verbinding die gebruikt wordt om de tabel te lezen. Altijd ‘bubs_tomcat’.
•authenticator.userIdFieldName: alleen voor ingebouwde gebruikersauthenticatie. De naam van de kolom die de unieke ID van de gebruiker vasthoudt. Altijd ‘GBR_ID’.
•authenticator.loginFieldName: alleen voor ingebouwde gebruikersauthenticatie. De naam van de kolom waarin de gebruikersnaam van de gebruiker staat. Altijd ‘GBR_AANMELD_CODE’.
•authenticator.passwordFieldName: alleen voor ingebouwde gebruikersauthenticatie. De naam van de kolom waarin het wachtwoord van de gebruiker staat. Altijd ‘GBR_WACHTWOORD’.
Om authenticatieproblemen met LDAP op te lossen verdient het aanbeveling gebruik te maken van LDAP-hulpmiddelen zoals ldapsearch (UNIX/Linux), dsquery (Microsoft Windows Server 2003) of LdapSearch van Novell (http://www.novell.com/coolsolutions/tools/17350.html):
ldapsearch -x \
-h 192.168.172.11 \
-w secret \
-D 'cn=UW NAAM IN WOORDEN,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=invantive,DC=local' \
-b OU=MyBusiness,DC=invantive,DC=local \
userPrincipalName=USER@invantive.local mail
In de reeks van instellingen die beginnen met ‘bubs_tomcat.’ wordt vastgelegd via welke verbinding de gegevens van de applicatie benaderd kunnen worden. De betekenis van de instellingen is:
•bubs_tomcat.name: de naam van de verbinding. Altijd ‘bubs_tomcat’.
•bubs_tomcat.driver: de naam van de Java class die gebruikt wordt om de verbinding conform JDBC op te bouwen. Altijd ‘oracle.jdbc.driver.OracleDriver’.
•bubs_tomcat.dbType: het type van de onderliggende database. Altijd ‘Oracle’.
•bubs_tomcat.url: de JDBC URL die gebruikt wordt om de verbinding mee op te bouwen. Deze heeft het formaat ‘jdbc:oracle:thin:@’, gevolgd door de naam of adres van de server, het teken ‘:’, de poort waar de databaselistener op luistert (vaak 1521), weer het teken ‘:’ en tenslotte de naam van de instance. Een voorbeeld is ‘jdbc:oracle:think:@localhost:1521:ORCL’.
•bubs_tomcat.maxconn: het maximum aantal gelijktijdige verbindingen met de Oracle-database. Dit is normaliter circa 20% van het maximaal aantal gelijktijdige gebruikers. Een hogere waarde kan echter geen kwaad, anders dat er per verbinding die echt gebruikt wordt circa 10 Mb extra aan intern geheugen nodig is op piekmomenten. Voor ontwikkelomgevingen is het soms handig om het aantal op ‘0’ in te stellen. Dit betekent dat de verbinding meteen na gebruik weer gesloten wordt. Dit kost prestaties, maar maakt het wel eenvoudiger om problemen door het vasthouden van ‘state’ te voorkomen (bijvoorbeeld ORA-04061 meldingen) als een ontwikkelaar code wijzigt terwijl het systeem draait. In de meeste gevallen zal het verwijderen van een Oracle-sessie automatisch gerepareerd worden door de webinterface.
•bubs_tomcat.user: de Oracle-gebruiker waarmee de verbinding gelegd wordt. Bijvoorbeeld ‘bubs_tomcat’.
•bubs_tomcat.password: het wachtwoord van de Oracle-gebruiker zoals vastgelegd in ‘bubs_tomcat.user’.
•bubs_tomcat.timeout: de webapplicatie beschouwt een gebruiker na een bepaalde tijd als niet meer actief en meld hem af. De waarde van ‘bubs_tomcat.timeout’ bepaalt na hoeveel seconden de gebruiker automatisch afgemeld wordt.
•bubs_tomcat.fieldLeftDelim: het teken dat gebruik wordt om veldnamen in databaseopvragingen te quoten aan de linkerzijde. Altijd ‘"’.
•bubs_tomcat.fieldRightDelim: het teken dat gebruik wordt om veldnamen in databaseopvragingen te quoten aan de rechterzijde. Altijd ‘"’.
•bubs_tomcat.dateLeftDelim: het teken dat gebruik wordt om datumconstanten in databaseopvragingen te quoten aan de linkerzijde. Altijd ‘'’.
•bubs_tomcat.dateRightDelim: het teken dat gebruik wordt om datumconstanten in databaseopvragingen te quoten aan de rechterzijde. Altijd ‘'’.
•bubs_tomcat.dBNameUppercase: altijd ‘True’.
•bubs_tomcat.dateFormat: het gehanteerde databaseformaat voor datums, altijd ‘dd-MM-yyyy HH:mm’.
•bubs_tomcat.booleanFormat: het gehanteerde databaseformaat voor velden die een booleanvlag bevatten (‘waar’ of ‘onwaar’). Altijd ‘Y;N’.
•bubs_tomcat.optimizeSql: altijd ‘True’.
•bubs_tomcat.sessionCommand0: het statement dat na het opbouwen van een nieuwe sessie altijd uitgevoerd wordt. Altijd ‘alter session set nls_date_format = ‘DD-MM-YYYY HH24:MI’’.
In de reeks van instellingen die beginnen met ‘bubs_exact.’ wordt vastgelegd via welke verbinding de gegevens voor de ERP-interface opgehaald worden. De betekenis van de instellingen is:
•bubs_exact.name: de naam van de verbinding. Altijd ‘bubs_exact’.
•bubs_exact.driver: de naam van de Java class die gebruikt wordt om de verbinding conform JDBC op te bouwen. Bijvoorbeeld ‘oracle.jdbc.driver.OracleDriver’ voor een Oracle RDBMS en ‘com.microsoft.jdbc.sqlserver.SQLServerDriver’ voor Microsoft SQL Server.
•bubs_exact.dbType: het type van de onderliggende database. Bijvoorbeeld ‘Oracle’ voor een Oracle RDBMS en ‘MSSQLServer’ voor Microsoft SQL Server.
•bubs_exact.url: de JDBC URL die gebruikt wordt om de verbinding mee op te bouwen. Voor Oracle RDBMS heeft deze het formaat ‘jdbc:oracle:thin:@’, gevolgd door de naam of adres van de server, het teken ‘:’, de poort waar de databaselistenener op luistert (vaak 1521), weer het teken ‘:’ en tenslotte de naam van de instance. Een voorbeeld is ‘jdbc:oracle:think:@localhost:1521:ORCL’. Voor Microsoft SQL Server heeft deze het formaat ‘jdbc:microsoft:sqlserver://’, gevolgd door de naam of adres van de server, het teken ‘:’ en de poort waar de databaselistener op luistert (vaak 1433). Een voorbeeld is ‘jdbc:microsoft:sqlserver://localhost:1433’.
•bubs_exact.maxconn: het maximum aantal gelijktijdig verbindingen met de ERP-database. Dit is normaliter circa 20% van het maximaal aantal gelijktijdige gebruikers. Meer dan 1 heeft normaal geen zin, omdat de ERP-interface maximaal eenmaal gelijktijdig uitgevoerd kan worden.
•bubs_exact.user: de gebruiker waarmee de verbinding gelegd wordt. Bijvoorbeeld ‘exact’.
•bubs_exact.password: het wachtwoord van de gebruiker zoals vastgelegd in ‘bubs_exact.user’.
•bubs_exact.timeout: de webapplicatie beschouwt een gebruiker na een bepaalde tijd als niet meer actief en meld hem af. De waarde van ‘bubs_exact.timeout’ bepaalt na hoeveel seconden de gebruiker automatisch afgemeld wordt.
•bubs_exact.fieldLeftDelim: het teken dat gebruik wordt om veldnamen in database opvragingen te quoten aan de linkerzijde. Altijd ‘"’ voor Oracle en ‘[’ voor Microsoft SQL Server.
•bubs_exact.fieldRightDelim: het teken dat gebruik wordt om veldnamen in databaseopvragingen te quoten aan de rechterzijde. Altijd ‘"’ voor Oracle en ‘]’ voor Microsoft SQL Server.
•bubs_exact.dateLeftDelim: het teken dat gebruik wordt om datumconstanten in databaseopvragingen te quoten aan de linkerzijde. Altijd ‘'’.
•bubs_exact.dateRightDelim: het teken dat gebruik wordt om datumconstanten in databaseopvragingen te quoten aan de rechterzijde. Altijd ‘'’.
•bubs_exact.dBNameUppercase: altijd ‘True’.
•bubs_exact.dateFormat: het gehanteerde databaseformaat voor datums, altijd ‘dd-MM-yyyy HH:mm’ voor Oracle en ‘yyyy-MM-dd HH:mm:ss’ voor Microsoft SQL Server.
•bubs_exact.booleanFormat: het gehanteerde databaseformaat voor velden die een booleanvlag bevatten (‘waar’ of ‘onwaar’). Altijd ‘Y;N’.
•bubs_exact.optimizeSql: altijd ‘True’.