Ein ControllerServlet für andere Servlets - Sinnvoll oder nicht?

Stroker89

Bekanntes Mitglied
Hallo liebe Leute,

ich bin momentan an einem Webprojekt zugange, das recht viele Servlets beherbegen wird (Kontrollschicht). Nun stellt sich mir die Frage ob es vielleicht sinnvoll wäre, wenn ich ein ControllerServlet schreibe, was bei jeder Aktion aufgurefen wird und das dann die Aufgabenverteilung an die anderen Servlets übernimmt.

Ist sowas überhaupt sinnvoll?

Gruß Martin
 
Zuletzt bearbeitet:

Stroker89

Bekanntes Mitglied
Danke ich hab mir das ganze mal angeschaut :) und mir ist auch klar, wie der Frontcontroller zu den Handlern forwarded aber was mir nicht klar ist wie ich dann von dem handler wieder zurück zum Controller komme um dann das Ergebnis, auf den JSPs auszugeben :(
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Idealerweise geben deine Controller ein Ergebnis zurück, welches der Frontcontroller zu einer View (z.B. JSP) auflösen kann.

Der FrontController hat dann neben dem finden deines richtigen Controllers noch die Aufgabe, das Ergebnis des Controllers so weiter zu bearbeiten, dass die View anschließend angezeigt wird.
 

Stroker89

Bekanntes Mitglied
Danke erstmal für die Erklärung :) hab jetzt versucht mit einem Servlet den Pfad der Aufrufenden .jsp rauszufinden, was aber komischerweise nicht ganz klappt :(

mit

Code:
String fromView = request.getRequestURI();

bekomme ich immer den Pfad des Servlets zurück :(
 

Stroker89

Bekanntes Mitglied
Jetzt hab ich endlich verstanden wie es funktioniert :)

Im Prinzip muss man das HandlerServlet vom Frontcontroller gar nicht aufrufen sonder könnte es rein theoretisch einfach instanzieren und dann eine Methode im Handler implentieren der den Pfad zur View zurück gibt und dann im Frontcontroller zur View dispatchen.

Sehe ich das richtig?
 
S

SlaterB

Gast
der Frontcontroller muss kein anderes Servlet mit public void doGet() aufrufen, richtig,
die Bearbeitung kann losgelöst von allen Frameworks in beliebigen eigenen Klassen geschehen solange am Ende irgendjemand an eine View weiterleitet
 

Stroker89

Bekanntes Mitglied
Also im Moment habe ich das so:

Frontcontroller:

Java:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
        String pathInfo = request.getPathInfo();
        PrintWriter out = response.getWriter();
        String view = null;
        if (pathInfo == null || "/".equals(pathInfo)) {
           response.sendError(HttpServletResponse.SC_BAD_REQUEST);
        }
        String servlet = pathInfo.substring(1);
        
        if(servlet.equals("register")){
            Class clazz = Class.forName("handlers.register");
            register r = (register) clazz.newInstance();
            view = r.processRequest(request, response);
        }
        
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(view);
        dispatcher.forward(request, response);
        
        
    }

Wenn ich jetzt http://domain/projekt/controller/register aufruf, leitet der Controller die Anfrage an der register-Handler weiter. Der sieht so aus:

register.java (Servlet):

Java:
@WebServlet("/register")
public class register extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    @EJB user UserBean;
    @EJB MD5encrypt MD5Bean;
    
    public register() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);

    }

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }
    
    public String processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String view = null;
        boolean userregister = false;
        String vorname = request.getParameter("jsname");
        String nachname = request.getParameter("jsusername");
        String email = request.getParameter("jsemail");
        String passwordclear = request.getParameter("jspassword");
        
        String password = MD5Bean.EncryptPassword(passwordclear);
 
        userregister = UserBean.createUser(vorname, nachname, password, email);
        
        if(userregister==true){
            view = "views/register2.jsp";
        }
        else{
            view = "error/registererr.jsp";
        }
        
        return view;
    }

}

Wie man sehen kann, werden hier noch zwei EJB benutzt.
Das komische ist jetzt, dass ich vom Server eine NullPointerException bekommen unzwar an dieser Stelle:

Java:
userregister = UserBean.createUser(vorname, nachname, password, email);

worauf ich zurück schliesse, dass der request leer ist. Aber warum? Ich übergebe ja den Request und Response an den Handler :(

Daten kommen übrigens aus einem Registrierungsformular.

Hat jemand eine Idee? Werd daraus irgendwie nicht ganz schlau :(
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Klassen unbedingt groß schreiben, Variablen klein

und schau dir doch an, was an Parametern ankommt (Logging, Debugging?), die einzelnen Parameter + den Querystring an sich,
im Register sowie vorher im FrontController, durch den Methodenaufruf sollte es da keinen Unterschied geben
 

Stroker89

Bekanntes Mitglied
Ok alles klar :) danke für den Hinweis. Irgendwie war das Problem auch an den Namen dass die Beans null waren.

Aber nun hab ich eine ander nullpointerexception und zwar beim dispatch :(

Java:
dispatcher.forward(request, response);
 
S

SlaterB

Gast
view ist gesetzt, ist ein Wert wie "views/register2.jsp"?
funktioniert es von anderen Servlets aus, nur vom FrontController nicht?

wenn überall nicht, dann eine Frage der allgemeinen XML-Konfigurationen,
ansonsten vielleicht auch eine Konfigurationsfrage (ist eingeschränkt, von wo nach wo weitergeleitet werden darf)
oder sonst fällt mir nix ein

----
wozu eigentlich so kompliziert an anderer Stelle:

> Class clazz = Class.forName("handlers.register");
> register r = (register) clazz.newInstance();

wenn du die Klasse eh kennst, dann schreibe
Register r = new Register();
 

Stroker89

Bekanntes Mitglied
Ja view ist definitiv gesatzt egal ob die Action erfolgreich ist oder nicht.
In der web.xml ist nur das Mapping für den frontcontroller drin also /Controller/* so wie es sein soll.

Ja werde das noch ändern :) mit der instanzierung
 
S

SlaterB

Gast
die wichtigste Frage ist noch, ob der Forward je funktioniert hat mit 'normalen' Servlets?
wenn nicht oder nie getestet, dann ist es weiter ein Problem, hat aber dann möglicherweise nichts mit der Umstellung auf FrontController zu tun,

wie sind dann die Verzeichnisse aufgebaut usw.?, wobei ich da nichts konkretes sagen kann,
anfangs nach einem Tutorial richten bis der erste dispachter-view-forward klappt
 

Stroker89

Bekanntes Mitglied
Nein der forward hat noch nicht funktioniert, da ich ein bestehendes Projekt gerade Umbau bzw. neu gestalte. Ich habe jetzt einfach mal mit dem ersten Servlet angefangen. Dem register. Aber irgendwie will das alles nicht :(
 

Stroker89

Bekanntes Mitglied
Für diejenigen die es interessiert :)

Das Problem lag daran, dass die Annotions nicht in einem Servlet funktionieren, dass von einem anderen Servlet instanziert wird? Warum auch immer...

Ich benutze in den Handlern EJBs als Helper und die waren immer null :( hab das so gelöst, dass ich die EJBs und EntityManager schon im Frontcontroller injecte und dann die die gebraucht werden mit an den aufzurufenden Handler übergeb :)

Vielen Dank an alle für eure Hilfe :)

Gruß Martin
 

mvitz

Top Contributor
Wollte das eigentlich auch gesagt haben, habe aber dann irgendwie gedacht die NullPointer kämen wo anders her.

Das die @EJB nicht injeziert werden liegt halt daran, dass deine Servlets (bzw. die Klassen müssen ja keine Servlets mehr sein) nun nicht mehr vom Webcontainer verwaltet werden, sondern von dir --> du musst dich um das injecten kümmern.
 

ruutaiokwu

Top Contributor
das thema ist zwar schon alt, aber ich möchte trotzdem noch meinen "senf" dazugeben:

wir haben mal eine konstruktion gemacht, welche ingesamt 3 webapplkationen beinhaltet, jedoch nur aus einem servlet besteht:

1. eine klasse ServletDispatcher (extends HttpServlet) erstellen

2. bei 3 webapps 3 klassen erstellen, diesen im konstruktor die HttpServletResponse sowie den HttpServletRequest übergeben, und diese anschliessend als member zur verfügung stellen & in diesen klassen eine funktion void processRequest().
(oo-puristen machen selbstverständlich noch ein interface oder eine abstr klasse dazu!)

3. in der web.xml die 3 url's zum ServletDispatcher mappen...

4. im ServletDispatcher in der service-funktion die url auflösen, und je nach url resp. fall eine andere der unter punkt 2 beschriebenen klassen instanzieren (konstruktor unter punkt 2 beschr.) und die processRequest funktion aufrufen.

5. in der processRequest-funktion kann man dann schlussendlich an das jsp oder xhtml-facelet (jsf 2.0), oder was auch immer für die view, per requestdispatching forwarden. oder aber den outputstream abfangen in einen string umwandeln und diesen per HttpServletResponse.getWriter().println(generated_html_client_code) an "ort und stelle" ausgeben... in diesem fall müsste man aber ein include, anstatt eines forwards, verwenden...



wenn ich ehlich sein darf: frameworks sind was für weicheier, zumindest mvc-frameworks. jsf z.b. verwende ich NICHT als komplettes mvc-framework, sondern nur wie oben beschreiben, per facelet 2.0 (also für den viel-teil von mvc: xhtml ist geil!!!) und einem normalen HttpServlet... des weiteren unterstützt java "von haus aus" zumindest view (-> jsp) und controller (-> serlvet) und irgendwelche beans (-> model) für irgendwelche daten (z.b. ContactFormBean mit kontaktformularfelder- settern & -gettern), welche man im controller (servlet) per HttpServletRequest.getParameter(...) holt und was auch immer damit anfängt...

das ganze ist doch relativ trivial... sehe nicht im geringsten ein, wozu man dafür ein framework mit 27 jar's in der grösse von 50 mb benötigt? ;-)


anders sehe ich die sache client-seitig, javascript & ajax und so... aber eher wegen browser-kompatiblitätsproblemen...


grüsse, jan
 

ruutaiokwu

Top Contributor
noch den grund für diese konstruktion: alle 3 webapps mussten sich eine session teilen, so dass man sich nicht bei jeder webapp einzeln einloggen musste...
 
M

maki

Gast
enn ich ehlich sein darf: frameworks sind was für weicheier,
jmar, mal ganz ehrlich: Für jemanden der nicht mal weiss wie man einen Iterator richtig verwendet, machst du den mund ganz schön weit auf.

Und jetzt mal ganz böse: Den Pfusch, den du hier oft als "Lösung" postest, den würde ich an deiner Stelle ganz tief im Garten vergraben, aber keinesfalls als "Lösung" verkaufen und dafür Geld nehmen.

So, musste mal gesagt werden...
 
Zuletzt bearbeitet von einem Moderator:

ruutaiokwu

Top Contributor
na ja, diesen Iterator brauche ich auch höööchst selten, da ich

a.) relativ selten über maps iteriere, es sei denn diese befinden sich in einem sortierten zustand oder sind LinkedHashMap's...

b.) für java.util.List implementierende klassen normalerweise das verwende:

for(int cnt = 0; cnt < list.size(); cnt++)
{

}

und NICHT:

while(listIterator.hasNext())
{
Object element = listIterator.next(); // ohne das gibt's nen absturz... das ist doch doof!?
}


die entwicker verdummen mit solchen sachen:

while(listIterator.hasNext())

und manche möchtegerne-programmierer/framework-einsetzer/selbsternannte oo-spezialisten sind dann total überfordert mit dem hier:

for(int cnt = 0; cnt < list.size(); cnt++)

...und können das kaum nachvollziehen... traurig aber wahr...

glücklicherweise haben mir perl-, c/c++-, (x)basic- und assembler-entwickler die logik von programmiersprachen beigebracht! (und nicht irgendwelche "java enterprise application senior architects" blablabla wie auch immer töntsupergut-titel-träger, die nicht mal wissen wie ein bubblesort funktioniert, geschweige denn jemals einen verschlüsselungs-algorithmus implementiert haben, oder nicht wissen, dass sich eine (eigentlich) rekursive funktion mithilfe von stacks nicht-rekursiv realisieren lässt)

und: es gibt noch viele sachen, wo ich gegen den strom schwimme, z.b. stringvergleich per String.intern(), das macht NIEMAND ausser mir. auch bei collections könnte man es meist auch lassen, die instanz zu typisieren...

also

List<String> str = new ArrayList();


alles immer "standard" zu machen, ist definitiv nicht die lösung...

und dass man eine datenstruktur nicht verändern darf, während man eine iteration über diese macht, finde ich aus rein algorithmischer sichtweise VÖLLIG SCHWACHSINNIG... HALLO???


hier:

Java:
    private List<String> list;

    @SuppressWarnings("unchecked")
    private void prepare()
    {
        list = new ArrayList();

        for (int cnt = 0; cnt < 10; cnt++)
        {
            list.add("" + cnt);
        }
    }

// kein problem hier...
public void test1()
    {
        prepare();

        for (int cnt = 0; cnt < list.size(); cnt++)
        {
            String element = list.get(cnt);

            if ((cnt + 1) % 5 == 0)
            {
                System.out.println("now");
                list.add(cnt, element.toLowerCase());
            }
        }
    }

    public void test2()
    {
        prepare();

        Iterator<String> i = list.iterator();

        int cnt = 0;
        try
        {
            while (i.hasNext())
            {
                String element = i.next();

                if ((cnt + 1) % 5 == 0)
                {

                    list.add(cnt, element.toLowerCase());

                }

                cnt++;

            }
        }
        catch (ConcurrentModificationException e)
        {
            System.out.println("");
        }
    }

(der output von test2 wendet sich nicht an dich ;-))

solche sachen nerven mich. für mich schlicht degenerierter auswuchs... bei maps kommt man ja nicht um den iterator herum (korrigere mich, wennn ich falsch liege) - klarer fall. bei listen diesen zu verwenden, das ist (aus meiner sicht) definitiv was für weicheier und dabei passieren so sachen wie bei test2... und wenn man nur lesen will: wennschon die variante mit dem doppelpunkt, "enhanced for loop".

und begründe mir bitte, sachlich-rational, was an unserer (meine team & ich) servlet-lösung so falsch ist..?

gruss, jan
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
(der output von test2 wendet sich nicht an dich )
Solltest die Verwarnung ernst nehmen.

"Weicheier" ist ein bei dir wohl ein Begriff für alle, die dir überlegen sind?

das macht NIEMAND ausser mir
Das ist bestimmt sehr oft der Fall.

Ansonsten: Wenn du einfach mal die Doku lesen würdest, bräuchtest du diese Fragen nicht mehr stellen (und sicherlich nicht solche schrägen Konstrukte programmieren), ist alles definiert & erklärt (Konsistenz, "fail fast", etc. pp.), den Link zum Colletions Tutorial hab ich dir bereits geschickt, aber da du ja keine Zeit zum lesen hast, nehme ich mir nicht mehr die Zeit dir solche einfachen und grundlegenden Sachverhalte zu erklären, scheint ja sowieso nicht auf fruchtbaren Boden zu fallen.
 

Stroker89

Bekanntes Mitglied
@jmar83

Der Grund warum ich einen eigenen FrontController implementieren wollte und habe, hing damit zusammen, dass er Teil eines Studienprojekts von mir war. Ich wollte nicht einfach nur blind irgend ein Framework benutzen, ohne wirklich zu verstehen wie es funktioniert und arbeitet. Im Nachhinein kann ich wirklich behaupten, aus dieser Sache wirklich viel gelernt zu haben, da es mein erstes JEE Projekt war.

Der Grund warum Frameworks benutzt werden ist, dass man sich eben nicht mehr um solche grundlegenden Funktiunalitäten als Entwickler auseinander setzen muss. Das ist ja auch Sinn und Zweck von der Geschichte. Ich musste wirklich viel Zeit in den FrontController investieren, da es für mich komplettes Neuland war.

Wenn du so programmierst wie es niemand anderes tut, sagt es mir nur eins: Du bist nicht Teamfähig, dein Code ist schwer, wenn überhaupt wartbar und du wirst mit dieser Haltung in keinem Unternehmen Fuß fassen.

Wenn du natürlich "nur" hobbymäßig ein bisschen codest, dann kannst du das halten wie ein Dachdecker, aber gleichzeitig kannst du nicht deine Art zu programmieren, als den Weg schlechthin darstellen. Das finde ich einfach nur anmaßend. In diesem Forum gibt wirklich sehr fähige Leute, die immer super Tipps geben und mir schon sehr viel geholfen haben.
Wenn mir jemand einen Tipp gibt mit dem ich leichter zum Ziel komme, dann nehme ich diesen dankbar an und bin froh, dass es einen leichteren Weg gibt, als den den ich mir zuerst überlegt habe.

Hoffe du verstehst meinen Haltung.

Auf jeden Fall bin ich froh dass es noch so ein Forum wie das hier gibt, da solche Leute wie hier eher die Seltenheit geworden sind. Die die mir schon geholfen haben, dürfen sich gerne angesprochen fühlen :)

Danke :)
 
Zuletzt bearbeitet:
G

Gast2

Gast
und: es gibt noch viele sachen, wo ich gegen den strom schwimme, z.b. stringvergleich per String.intern(), das macht NIEMAND ausser mir. auch bei collections könnte man es meist auch lassen, die instanz zu typisieren...

also

List<String> str = new ArrayList();


alles immer "standard" zu machen, ist definitiv nicht die lösung...

und dass man eine datenstruktur nicht verändern darf, während man eine iteration über diese macht, finde ich aus rein algorithmischer sichtweise VÖLLIG SCHWACHSINNIG... HALLO???

Hä? Was erzählst du für ein wirres Zeug? Nur weil du es so machst heißt es noch lange nicht das es gut ist? Bei Collections den Rawtype zu nutzen ist definitiv nicht die bessere Wahl. Stringvergleiche mit String.intern()? Schön und gut, aber außer dem Fakt das du dich damit als Exot in der Programmierwelt positionierst sehe ich da keine Vorteile und spätere Maintainer werden ihre Freude haben.

solche sachen nerven mich. für mich schlicht degenerierter auswuchs... bei maps kommt man ja nicht um den iterator herum (korrigere mich, wennn ich falsch liege) - klarer fall. bei listen diesen zu verwenden, das ist (aus meiner sicht) definitiv was für weicheier und dabei passieren so sachen wie bei test2... und wenn man nur lesen will: wennschon die variante mit dem doppelpunkt, "enhanced for loop".

und begründe mir bitte, sachlich-rational, was an unserer (meine team & ich) servlet-lösung so falsch ist..?

Sachlich rational? Damit hast du ja schon direkt gebrochen (Weicheier, degenerierter Auswuchs, ...). Es gibt durchaus Gründe bei Listen mit einem Iterator zu arbeiten. Zum Beispiel um in der Liste änderungen beim durchlaufen über den Iterator vorzunehmen. Siehe meine erste Quote von deinem vorherigen Kommentar und überleg noch mal worauf sich das bezieht...

Du und ein Team könnt euch freuen das eure "Lösung" funktioniert. Eine saubere JEE Architektur sieht allerdings anders aus. Es gibt Standards und Best Practices nicht umsonst, aber das mit dir zu diskutieren würde wohl den Rahmen dieses Topics sprengen.
 

ruutaiokwu

Top Contributor
hallo Stroker89,

"aber gleichzeitig kannst du nicht deine Art zu programmieren, als den Weg schlechthin darstellen. Das finde ich einfach nur anmaßend."

nein will ich auch nicht, was ich schreibe / erzähle ist meine meinung, und sicher nicht absolut...

...für mich ist aber auch nicht absolut, was "die grosse masse" erzählt (nicht nur im it-bereich!)

wenn alle alles immer nur "standard" machen, na ja...


"Im Nachhinein kann ich wirklich behaupten, aus dieser Sache wirklich viel gelernt zu haben, da es mein erstes JEE Projekt war."

eben. so lernst du noch einigermassen, was im hintergrund "abgeht". viele framework-einsetzer haben nicht den geringsten schimmer davon, oder sind halt nicht daran interessiert. (im sinne von "das ist ein framework, das läuft halt einfach...")


und, nur so als hinweis: java-webapplikationen != jee

servlets's, jsp's, etc. dafür brauch man eine "servlet-engine", nicht aber einen "richtigen" j2ee-server (-> jboss, glassfish, weblogic) tomcat könnte man mit "openEJB" erweitern...

auch web-mvc frameworks (struts, spring, jsf & co.) brauchen keinen "richtigen" j2ee-server, sondern nur einen servlet-container.

zu j2ee gehören bspw.:

- ejb's (enterprise java beans)
- jms (java message service)
- irgendwelche CORBA-konnektoren um legacy-systeme in die "systemlandschaft" miteinzubeziehen. (da bin ich mir nicht 100%-ig sicher, bei den oberen punkten schon!)
- mehr weiss ich auch nicht. schliesslich verwenden wir KEIN jee/j2ee (wie es auch immer heisst!), sondern haben tomcat als app server. relativ simple webapplikationen, der app server muss einfach html ausgeben können. nicht mehr, nicht weniger. dafür brauchen wir keine jee-features, grundsätzlich zum glück nicht, wobei ich in ein, zwei fällen aber auch schon an eine ejb-lösung gedacht habe... schlussendlich liess sich die sache aber problemlos & elegant OHNE ejb's realisieren...
 

ruutaiokwu

Top Contributor
hallo fassy,

"Bei Collections den Rawtype zu nutzen ist definitiv nicht die bessere Wahl."

auf jeden fall kann ich damit das downcasting zur "konkreten" klasse verhindern... das reicht mir. genau das brauche ich auch in diesem fall, nicht mehr, nicht weniger.

google collections api (ist zwar was anderes...) macht das auch nicht.

String.intern() ist für mich das sauberste & logischste. aber auch das ist natürlich ansichtssache...

"Fakt das du dich damit als Exot in der Programmierwelt positionierst"

ja, einige sind da nicht immer so begeistert... andererseits bekomme ich manchmal komplimente in der art "du weisst aber viel"... na ja... :)

"Sachlich rational? Damit hast du ja schon direkt gebrochen (Weicheier, degenerierter Auswuchs, ...)."

ja, da hast du auch wieder recht, versuche aber so gut es geht zu begründen. (nicht wie viele andere: das macht man halt einfach so und punkt...)

"Zum Beispiel um in der Liste änderungen beim durchlaufen über den Iterator vorzunehmen."

na ja, das schaffe ich mit einer listen-iteration im c/c++-stiel (also for-schleife, wie bei der antwort auf maki's beitrag...)

aber wer unbedingt den iterator verwenden will, der soll... finde den anderen weg "algorithmisch" offensichtlicher, oder wie man dem sagen soll...?


"Eine saubere JEE Architektur sieht allerdings anders aus."

wie schon bei vorherigen beitrag java-webapps != j(2)ee

zum glück brauchen wie keine "fette" jee-archtektur, sondern machen "schlanke" webanwendungen, nur mit tomcat. dynamisch html ausgeben und requests entgegennehmen und verarbeiten. das ist alles, was wir brauchen...
 
Zuletzt bearbeitet:

ruutaiokwu

Top Contributor
Stroker89,

habe deinen beitrag nicht gesehen, habe inzwischen geschrieben... ;-)

dann erklärt mir doch bitte (auch maki!) warum ein tomcat NICHT als j2ee-application-server bezeichnet wird?

dann würde ich sagen, wir machen keine "richtigen" j2ee-anwendungen...?


grüsse, jan
 

ruutaiokwu

Top Contributor
@maki:

"Es gibt aber offensichtlich mindestens ein sehr verwirrtes Team das gar nicht weiss was es da eigentlich macht *g*"

scheinbar produktiveres als du mit deinen kommentaren...?
 
M

maki

Gast
und, nur so als hinweis: java-webapplikationen != jee
Das war wiedermal vollkommen falsch, so wie einiges was du von dir gibst.

mehr weiss ich auch nicht. schliesslich verwenden wir KEIN jee/j2ee (wie es auch immer heisst!),
Naja, zumindest im ersten Satz hasst du damit fast ein bisschen Recht, der letzte ist mal wieder... s.o.

Servlets sind Teil von Java EE, aber zu Java EE gehört auch noch mehr, zB. wie JNDI auch, und JAAS, EJBs, etc. pp.

Für einen vollwertigen Java EE Server braucht man aber mehr als nur ein 2 Implementierungen der Java EE Speks (Tomcat hat aber noch mehr implementiert, aber eben nicht alle notwendigen), da gibt es auch Mindestanfonderungen.

Tomcat war früher (vor Glassfish) die Referenzimplementierung der Servlet Spek. (und damit eines ServletContainers), diese ist eben nur ein Teil von Java EE.

Wie dem auch sei, ich denke, die ganze Diskussion bringt niemandem mehr wirklich etwas, denn du jmar, wärst schon längst in der Lage gewesen mehr Zeit zu haben, die du für lesen hättest nutzen können, wenn du die Zeit nicht darin investiert hättest, inhaltlich falsche Beiträge zu verfassen.
 

ruutaiokwu

Top Contributor
hallo maki,

ok, dann wäre das auch geklärt, habe die sache mit tomcat!=jee vom "hörensagen"... (vorher hatte ich das auch so im kopf, tomcat=jee, wurde aber scheinbar im nachhinein "falsch" belehrt...)

aber bekanntlich sollte man grundsätzlich nicht alles glauben, wenn man sich nicht selbst vergewissert hat...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
S Seite nur aufrufbar machen für eingeloggte User Web Tier 1
R JavaScript für Java Enterprise Entwickler Web Tier 1
G JSF Webanwendung Editor für JSON gesucht Web Tier 1
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
J Funktion für AJAX - Problem mit Return Web Tier 14
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
R JSF Zugriff für Helpdesk-Mitarbeiter Web Tier 15
I Autocomplete Google Maps für JSF Web Tier 0
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
M JSF Framework für User Management etc. Web Tier 0
D Welches Webframework für REST geeignet Web Tier 1
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
M Converter für SelectOneMenu Web Tier 3
J eigene taglib für jsf 2.0 schreiben Web Tier 21
S Empfehlung für stateless Webframework Web Tier 2
J mögliche 'eigene' Konfigurationen für die Web.XML auflisten lassen Web Tier 4
H Singleton für In-Memory-Caching in WebApp Web Tier 4
F Wo und wie Daten die für alle Benutzer bestimmt sind verwalten Web Tier 4
S beste Preis/Leistung für Server Web Tier 3
H Relativer Pfad für XML-Datei in JSP-Anwendung Web Tier 3
S Welcher ansatz für Web Application + Web Service Web Tier 5
M JSF Converter für String to List<String> Web Tier 2
R Servlet Resource laden für SMTP - Session Web Tier 4
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
O Welche JSF Implementation ist am besten für mich geeignet ? Web Tier 3
T Sprachenauswahl für Projekt Web Tier 3
M JSF Komponentenframework für Web/JSF? Web Tier 7
M JSF Simple Testklasse für Button - MethodNotFoundException? Web Tier 6
B JSF JSF1.1 @Tomcat 5.5 für ein neues Projekt Web Tier 18
I Anwendungsfälle für OO Vererbungshierarchien bei Webapps Web Tier 4
D Struts Mehrsprachigkeit in textfield für key ja, aber für label nein? Web Tier 4
M Classpath für JPA in Tomcat Webapp: Wie konfigurieren? Web Tier 4
S ClassPath für Servlet Web Tier 3
J Welches Framework für Webentwicklung? Web Tier 13
T Plugins für Eclipse Web Tier 9
T JSF Zwei Listen/Vectoren für f:selectItems verknüpfen - möglich? Web Tier 2
ruutaiokwu JSF nur für die präsentation verwenden? Web Tier 4
C Webspace bzw. Server für GWT Web Tier 5
O Testframework für Webanwendung? HTMLUnit? Web Tier 3
C CMS für GWT Anwendung Web Tier 2
T SVG für JSF2 Web Tier 8
Java.getSkill() Lerngruppe für Tapestry 5 Web Tier 21
T Template für die ganze Seite Web Tier 6
Spin JSF oder PHP für Web Web Tier 4
M Java Framework für größere Projekte verwenden Web Tier 5
Z Erlaubte Klassen für h:selectOneListbox Iteration? Web Tier 2
R Exception? Was für ein Fehler? Web Tier 3
J DataScroller: rowCount für Folgeseiten übernehmen Web Tier 2
M Tomcat - Mehrere Verzeichnisse für die jsp Web Tier 12
N JMX MBean für JBoss 4.2.2 Web Tier 4
E Mime-Type für unbekanntes Programm Web Tier 6
M Best Practice für "Teilnahmebediengung akzeptieren" Web Tier 2
M JSP Custom Tag für Bilder Web Tier 14
H Gibt es für das message-bundle eine Standard - Ordnung? Web Tier 2
J Welcher WebServer(-anbieter) für Servlets? Web Tier 5
N Webfrontend für vorhandenes Programm Web Tier 2
A Einfaches Filter-Servlet für Benutzer-Validierung Web Tier 3
R <fmt:formatDate> und 2 Zeichen für den Wochentag? Web Tier 2
T Ajax / Javascript Plugin für Eclipse Web Tier 1
T Was nehmen für eine Datenbankapplikation mit Webinterface Web Tier 5
G wert für hiddenfield per javascript setzten Web Tier 4
K Escape Charakter für EL Web Tier 4
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2
N JSF: Servlet für Bilder: Verbindung zu Spring Service ? Web Tier 1
S Mehrere Styleklassen für Tabellenreihen Web Tier 4
A JSF form absenden ohne require validation (andere schon) Web Tier 4
S JSF Eine XHTML-Datei in zwei andere XHTML integrieren Web Tier 0
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
H JSF 2.x - Navigation / Weiterleistung auf andere views (abc.xhtml) Web Tier 2
R Zugriff Validator in Tabelle (ui:repeat) auf andere Felder Web Tier 2
E JSF MangedBean ruft andere ManagedBean auf Web Tier 3
P JSF SelectManyCheckbox-Auswahl bedingt andere Komponenten Web Tier 9
P JSF Menüauswahl soll andere Komponente aktualisieren Web Tier 3
D Auf andere Seite mit GWT Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben