webForumDet fria alternativet

Nybörjarfrågor

3 svar · 537 visningar · startad av intesa

intesaMedlem sedan apr. 2006190 inlägg
#1

Har tidigare sysslat lite med Java i form av små applikationer men försöker nu ta steget över och lära mig Java EE, vilket inte visade sig vara det lättaste :r

Har börjat läsa Java EE Tutorial från sun och har ett par frågor om lite grundläggande saker som jag inte helt förstått.

Jag har följande klasser:
MyDatabase - Klass som håller en databasanslutning.
MyListener - Listener-klass som skapar ett MyDatabase-objekt vid start av Java EE Servern.
MyServlet - Klass som implementerar Servlet-interfacet.

Först ett par frågor för att reda ut lite begrepp:
Kan alla dessa klasser klassas som "Web Components"?
Körs alla klasserna i "Web Containern"?
Kan alla dessa klasser tillsammans kallas för en "Web Module"?

Sedan vad jag tror sker "under ytan" på servern när programmet körs:
När Java EE Servern startar så skapar den en instans av MyListener, som i sin tur skapar en instans av MyDatabase och sparar den i "Web Contexten".
För varje request som görs mot URL'en som är mappad mot MyServlet så skapas en ny instans av MyServlet. Alla dessa MyServlet-objeken använder sig av samma MyDatabase objekt från "Web Contexten".

Jag postar ingen källkod eftersom jag inte har någon, det hela är bara ett fiktivt program baserat på några delar i "bookstore1" exemplet i Java EE Tutorialen. Så jag förstår att ni inte kan bekräfta min teori om vad som händer "under ytan", men jag skulle vilja veta om det är troligt att det går till på detta sättet. Som tex att det skapas ett nytt servet-objekt vid varje request, att varje servlet kan använda sig av ett och samma MyDatabase-objekt osv.

Vart lite långt detta inlägget. Hoppas ni orkade med att läsa och lyckades förstå nått av det :)

intesaMedlem sedan apr. 2006190 inlägg
#2

Tog mig själv i kragen och kodade klasserna för att testa lite.
Kom fram till att Java EE Servern inte skapar en ny instans av MyServlet-klassen för varje request. Kan man lita på att den aldrig skapar mer än en instans?

Bifogar källkoden till klasserna, om nån nu skulle vilja ta en titt :)

spangoMedlem sedan juni 20008 205 inlägg
#3

intesa skrev:

Tog mig själv i kragen och kodade klasserna för att testa lite.
Kom fram till att Java EE Servern inte skapar en ny instans av MyServlet-klassen för varje request. Kan man lita på att den aldrig skapar mer än en instans?

Servletcontainers ska inte skapa fler än en instans per servlet, men det finns de som gör det ändå vill jag minnas. Så det är inget man ska fästa sin tillit till. Däremot bör det bara skapas ett fast antal instanser, eftersom det vore väldigt minnesineffektivt att ha en instans per request, och eftersom man egentligen inte vinner något på att ha flera instanser.

intesaMedlem sedan apr. 2006190 inlägg
#4

Oki, tack spango.

Har försökt förstå hur man ska bygga upp en applikation som ska distribueras på 3 olika servrar. Så nu kommer jag med ett till jobbigt exempel ;)

På bifogad ritning är Server 1 webbserver, Server 2 bearbetar data och Server 3 agerar databas.

Tanken är den att klienten skickar data till webbservern som spar ner den på server 2.
Server 2 bearbetar sedan datan och lägger den i databasen på Server 3.

När klienten sedan begär en viss JSF-sida så hämtar webbservern ut data ur databasen via en JavaBean och presenterar datan för klienten i html.

Får inte riktigt grepp om det kan se ut såhär eller inte. För enligt suns tutorial ska JEB's användas när man vill distribuera en applikation. Men samtidigt får jag intrycket av att man inte ska anropa EJB's från en web component... Hur står det till egentligen?

j2ee5.gif
134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)