Java web applikationer med Tomcat

Relaterede dokumenter
Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Singleton pattern i Java

Tagwall med Php & MySQL

Arkitektur for begyndere

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

Databaseadgang fra Java

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Database design for begyndere

Introduktion til SQL queries

Gæstebog med validering opbygget med MySQL

Uploade billeder eller andre filer ved hjælp af php og mysql

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

Begrynder til at lave log ind system

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Forskellige Java versioner

Ratingsystem i PHP og MySQL

Loginsystem (med MySQL)

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Loginsystem med PHP4, klasser, sessions og MySQL database

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

The Design Diaries. Link til blog

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Dokumentering af umbraco artikeleksport:

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Geografisk lokalisering i JSP

IT projekt person galleri

Database programmerings tips

Logging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.

KIH Database. Systemdokumentation for KIH Databasen. 12. september Side 1 af 20

Dynamisk PHP design OPDATERET

Delphi og Databaser for begyndere

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Reeksamen, DSDS, forår 2008

Simpel upload af filer

Eksempel på en database: studenter, kurser, eksamener

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

J2EE for begyndere. Denne artikel introducerer J2EE. Den fortæller lidt om de forskellige teknologier i J2EE og kommer med små simple eksempler.

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Web- og serverprogrammering

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

Xenapps/Citrix klient opsætningsvejledning til Integra driftløsningen. Xenapps/Citrix basisport. Xenapps/Citrix Service. Xenapps/Citrix XML service

Afsending af s vha. ASP

Oracle8i R8.1.5 JAVA. Oracle8i R Oracle8i Enterprise Edition Oracle8i R Oracle8i R Oracle8i R8.1.

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Database "opbygning"

Introduction til.net remoting i C#

SAS USER FORUM DENMARK 2017 USER FORUM. Rune Nordtorp

Website sikkerhed SQL Injections og mere...

Forskellige databaser

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

Dette er en grundlæggende artikel til hvordan du laver et lille community, med forskelige

Introduction til.net remoting i VB.NET

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Vejledning for indlægning af materiale på NVF hjemmesiden.

Certificate Revocation Authority. Certificate Revocation Authority

FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017)

Hvilket sprog er hurtigst

OrCAD Capture TCL IDE med Eclipse

Bruger Manual For WT-215W WIFI relæ

Eksamen, DSDS, efterår 2007

Introduktion til funktioner, moduler og scopes i Python

Kom i gang med SAS STPbaserede

Opsætning af MobilePBX med Kalenderdatabase

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

Generelt gælder det at SQL serveren skal understøtte SQL Authentication (Mixed mode) da SIMS Serveren kommunikerer gennem en SQL bruger.

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.

Servlets, Tomcat & BlueJ

NVF hjemmesiden Vejledning for indlægning af materiale

Singleton pattern i C#

OpenTele datamonitoreringsplatform

Web- og serverprogrammering

Vejledning i brug af fjernarbejdsplads pa Danmarks Statistik Mac brugere

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Eksamen, DSDS, forår 2008

Test med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.

Lav en Wiki med PBworks Side 1

Data lagring. 2. iteration (implement backend)

Installation af Bilinfo på Windows

Web 2.0. World Wide Web (www)

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre

Vejledning til Teknisk opsætning

ISA Server 2006 Del 5. Jesper Hanno Hansen

Database kursus Forår 2013

Pronestor Room & Catering

Web- og serverprogrammering

MODERNISERINGSSTYRELSEN ØSLDV WINDOWS SERVICE DOKUMENTATION, INSTALLATION OG KONFIGURERING AF ØSLDV/RAY WINDOWSSERVICE

Parameterisering af databasekald med ASP og ADO

MM Hul-Igennem-Test i Prod. Information til kunder

Transkript:

Denne guide er oprindeligt udgivet på Eksperten.dk Java web applikationer med Tomcat Denne artikel beskriver hvordan man kan konfigurere container managed security og en database connection pool i Tomcat. Den forudsætter lidt erfaring med Java web applikationer og Tomcat. Skrevet den 09. Mar 2009 af arne_v I kategorien Programmering / JSP Historie: V1.0-13/01/2004 - original V1.1-31/01/2004 - forbedret formatering V1.2-09/02/2004 - flere ændringer af formatering Container managed security I Java web applikationer skelner man mellem: - container managed security - application managed security container managed security = JSP/servlet engine styrer sikkerheden application managed security = mine JSP og servlet styrer selv sikkerheden Man skelner også mellem:' - declarative security - programmatic security declarative security = adgangen angives i XML config fil programmatic security = adgangen angives i Java kode Jeg vil forklare hvordan man bruger container managed declarative security med Tomcat. Det er interessant, fordi det er det som kræver mindst kode. Man skal bruge en database med 2 tabeller med 2 felter i hver. De kan f.eks. oprettes med: CREATE TABLE Tomcat_users ( username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, PRIMARY KEY(username) ); CREATE TABLE Tomcat_roles ( username VARCHAR(50) NOT NULL, role VARCHAR(50) NOT NULL,

PRIMARY KEY(username, role) ); Man skal så ligge noget data ind. Mit test eksempel bruger: INSERT INTO Tomcat_users(username, password) VALUES('system', 'system'); INSERT INTO Tomcat_users(username, password) VALUES('arne', 'arne'); VALUES('arne', 'user'); VALUES('system', 'user'); VALUES('system', 'administrator'); d.v.s. bruger system har user+administrator rolle, mens bruger arne kun har user rolle. Så indsætter man en referance til dem i conf/server.xml: <Realm classname="org.apache.catalina.realm.jdbcrealm" debug="99" drivername="sun.jdbc.odbc.jdbcodbcdriver" connectionurl="jdbc:odbc:testmsaccess" connectionname="" connectionpassword="" usertable="tomcat_users" usernamecol="username" usercredcol="password" userroletable="tomcat_roles" rolenamecol="role" /> Jeg har bare brugt JDBC ODBC Bridge og MS Access til min test her. JDBC driver jar filer skal anbringes i common/lib. Hvis nu man f.eks. vil have 2 forskellige områder: - et som alle har adgang til - et som kun brugere med administrator rolle har adgang til så fordeler man indholdet i /open/* og /secure/* og putter følgende i web.xml: <security-constraint> <web-resource-collection> <web-resource-name>open part</web-resource-name> <url-pattern>/open/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection>

<web-resource-name>secure part</web-resource-name> <url-pattern>/secure/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>administrator</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>form</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> Man laver en login.jsp som indeholder: <form action="j_security_check" method="post"> Username: <input type="text" name="j_username"><br> Password: <input type="text" name="j_password"><br> <input type="submit" value="login"> </form> og en error.jsp som indeholder: Login failed! Og det er faktisk alt. Så sørger Tomcat for resten. Database connection pool Det er nødvendigt for god performance af en seriøs web applikation at bruge en database connection pool. Genbrug af connections forbedrer performance voldsomt, da det er en meget dyr operation at lave en fysisk database connection. Ved at have et begrænset antal fysiske database connectiosn, så undgår man også at databasen løber tør for connections og at applikationen derfor går ned. En database connection pool fungerer på den måde at: - poolen initialiseres med N fysiske database connections - når en side skal bruge en database connection så låner den en logisk database connection fra poolen og leverer den tilbage igen efter brug Man konfigurerer så en DataSource i en context (wep applikation) i conf/server.xml: <Context docbase="pooltest" path="/pooltest" reloadable="true">

<Resource auth="container" name="jdbc/testmysql" type="javax.sql.datasource" /> <ResourceParams name="jdbc/testmysql"> <name>factory</name> <value>org.apache.commons.dbcp.basicdatasourcefactory</value> <name>maxactive</name> <value>100</value> <name>maxidle</name> <value>30</value> <name>maxwait</name> <value>10000</value> <name>username</name> <value></value> <name>password</name> <value></value> <name>driverclassname</name> <value>com.mysql.jdbc.driver</value> <name>url</name> <value>jdbc:mysql://localhost/test</value> </ResourceParams> </Context> JDBC driver jar filer skal anbringes i common/lib. Min web applikation hedder pooltest. Jeg bruger en MySQL database. Og jeg giver den JNDI navnet jdbc/testmysql. Parameterne er vist nærmest selvforklarende. Når man så skal bruge en database connection henter man den med: import java.sql.*; import javax.naming.*; import javax.sql.*;... Context init = new InitialContext();

Context ctx = (Context) init.lookup("java:comp/env"); DataSource ds = (DataSource) ctx.lookup("jdbc/testmysql"); Connection con = ds.getconnection(); Den connection man får kan man bruge helt ligesom en connection hentet med traditionel JDBC DriverManager.getConnection. Når man skal frigive connection bruger man bare: con.close(); Mere skal der ikke til. Kommentar af simonvalter d. 13. Jan 2004 1 Ok havde et lille problem med at jeg i forvejen havde et default Realm der bruger xml, men nu spiller det. Kommentar af kurran d. 10. Apr 2007 2 Kommentar af roo104 d. 13. Mar 2004 3 Jeg tror jeg havde samme problem som loadet, så brugte <DefaultContext> så virkede det.