EJB, CDI, Webservices

schmatko

Mitglied
Hallo zusammen,

bin dabei einen Backend zu entwickeln.
Das Backend soll folgende Funktionen bieten:
Authentifizierung
Daten von einer Datenbak bereitstellen
Client soll per REST die Daten abholen​

Habe es mit Webservices gelöst ABER was ist EJB und CDI und drei Worten?
Sollte ich das mit EJB oder CDI lösen?
Wann verwende ich was oder muss ich alles zusammen verwenden?

Vielen Dank, bin auf die Antworten gespannt
 

stg

Top Contributor
Müssen muss man zunächst einmal so fast gar nix.

Sorry, aber mit den spärlichen Informationen kann man dir keine Ratschläge geben.
Lies deine Frage doch noch mal selbst. Du schreibst in etwa "Ich soll einen Webservice schreiben und ich habe das mit einem Webservice gelöst" Was erwartest du darauf nun für eine Antwort?

Zu EJB und CDI:
Bei konkreten Fragen kannst du dir hier immer gerne Rat einholen, aber eine erste Einarbeitung musst du schon selbst leisten. Das würde hier den Rahmen vollends sprengen.
 

schmatko

Mitglied
Ich habe angefangen mit JavaEE mich auseinander zu setzen. Habe Webservices genommen und mit einer Methode biete ich einen Datensatz aus einer MySQL einem Client an.

Webservices mit REST das verwende ich jetzt. Es funktioniert auch. Kann in meinem Browser den Json String anhand der Rest URL anzeigen lassen. Das bedeutet das Webservices die Daten einerL webseite zu verfügung stellen können und auch darstellen->brauche ich nicht, es soll ein Client mit einer Anwendund die Daten abfragen

Ich könnte es so belassen, möchte jedoch wissen was EJB und CDI ist und ob es vlt besser dafür geeignet ist oder wofür die überhaupt geignet sind.

EJB ist doch wie Webservices mit der Ausnahme das EJB kein Servlet und kein JSP anbietet, Servlet ist veraltet und JSP brauche ich nicht also sollte ich EJB nehmen???

CDI-> keine Vorstellung wann und wofür man es anwenden soll oder kann
 

stg

Top Contributor
Webservices mit REST das verwende ich jetzt.
Die Aussage macht wenig Sinn.
Der Client ist derjenige, der einen Webservice verwendet / benutzt.
REST ist die "Art", wie der Webservice aufgebaut ist.
Du hast nun also einen Webservice implementiert. Wie und womit du das gemacht ist, ist aber nach wie vor dein Geheimnis.

brauche ich nicht, es soll ein Client mit einer Anwendund die Daten abfragen
Was für eine Art Client den Webservice nutzt ist dem Webservice egal.

Ich (..) möchte jedoch wissen was EJB und CDI ist
EJBs sind von einem EJB Contianer verwaltete Komponenten, die dazu dienen Geschäftlogik zu kapseln.
CDI ist ein Standard für Context und Dependency Injection.
Wie schon zuvor gesagt: Du musst dich in die elementaren Grundlagen schon selber einlesen.

EJB ist doch wie Webservices
Nein.

mit der Ausnahme das EJB kein Servlet und kein JSP anbietet
Servlet und JSP haben mit EJBs zunächst einmal nix zu tun.

Servlet ist veraltet
Nein.
sollte ich EJB nehmen
Das kann dir hier niemand beantworten.

CDI-> keine Vorstellung wann und wofür man es anwenden soll oder kann

z.B. für Dependency Injetion.
 

schmatko

Mitglied
Du hast nun also einen Webservice implementiert. Wie und womit du das gemacht ist, ist aber nach wie vor dein Geheimnis.

Ich habe Glassfish als Server
JavaEE Projekt mit einem Web Modul und javax.json als Library
Datenbank: MySQL


Du musst dich in die elementaren Grundlagen schon selber einlesen.
Bin dabei, verstehe nicht alles und dachte jemand kann mir außerhalb wiki in drei Worten es erklären

Servlet und JSP haben mit EJBs zunächst einmal nix zu tun.
verstehe ich nicht-> denn das sind die zwei sachen die EJB beinhaltet und Webservices nicht
 

stg

Top Contributor
Ich habe Glassfish als Server
JavaEE Projekt mit einem Web Modul und javax.json als Library
Datenbank: MySQL
Nichts davon ist spezifisch für einen Webservice.
Die Frage bleibt bestehen..


Bin dabei, verstehe nicht alles und dachte jemand kann mir außerhalb wiki in drei Worten es erklären
Nein. In drei Worten ist das nicht mal eben so erklärt. Selbst zu den Grundlagen könnte man seitenweise Prosa verfassen.


verstehe ich nicht-> denn das sind die zwei sachen die EJB beinhaltet und Webservices nicht
Es wird nicht richtiger, wenn du es wiederholst. Das sind vollkommen verschiedene und voneinander unabhängige Dinge.
Es gibt Webservices, es gibt EJBs, es gibt Servlets und es gibt JSP, wobei JSP auf gewisse Weise auf der Servlet API basiiert.
 

schmatko

Mitglied
du sollst mich nicht belehren und zwingen was asu Büchern zu lernen, es ist ein Forum, ich will antworten von Leuten die eine Meinung dazu haben und die mein Problem verstehen.

Lass es mit deinen Antworten denn die helfen mir nicht weiter. Vlt. hat jemand noch was dazu zusagen.

Dankeschön
 

JCODA

Top Contributor
du sollst mich nicht belehren und zwingen was asu Büchern zu lernen, es ist ein Forum, ich will antworten von Leuten die eine Meinung dazu haben und die mein Problem verstehen.

Lass es mit deinen Antworten denn die helfen mir nicht weiter. Vlt. hat jemand noch was dazu zusagen.

Dankeschön
Es gibt viele Möglichkeiten, wie man Antworten zu seinen Fragen bekommt. Dies ist keine davon.
 

stg

Top Contributor
du sollst mich nicht (...) zwingen was asu Büchern zu lernen

Ich zwinge niemanden zu irgendetwas. Wenn du die Ratschläge nicht annehmen willst, ist das deine Sache. Für mich dreht sich die Welt auch weiter, wenn dem nicht so ist..

ich will antworten von Leuten die eine Meinung dazu haben und die mein Problem verstehen.

Ich denke ehrlich gesagt, dass du der einzige hier bist, der dein Problem nicht versteht. Du willst nur nicht einsehen, was dein eigentliches Problem ist.


Lass es mit deinen Antworten denn die helfen mir nicht weiter.

Sie helfen dir nicht weiter, weil einfach überhaupt keine Basis vorhanden ist, auf die man aufbauen könnte.
Diese musst du selbst schaffen, da führt überhaupt kein Weg dran vorbei.
Je früher du das einsiehst, desto besser ist es für dich selbst.
 

SeriousD0nkey

Bekanntes Mitglied
du sollst mich nicht belehren und zwingen was asu Büchern zu lernen, es ist ein Forum, ich will antworten von Leuten die eine Meinung dazu haben und die mein Problem verstehen.

Lass es mit deinen Antworten denn die helfen mir nicht weiter. Vlt. hat jemand noch was dazu zusagen.

Dankeschön

Kauf dir ein ordentliches Buch und arbeite das durch. Diese Themen sind viel zu komplex um dir das in ein paar Sätzen zu erklären (die Bücher haben nicht umsonst teilweise über 1000 Seiten).
 

schmatko

Mitglied
Ich bin dabei mir eine Basis zu schaffen.

Wenn ich in Intellij ein JavaEE Projekt erstelle und das Modul Webservices mit auswähle bekomme ich das Ergebnis. Richte meinen Glassfish Server und DB ein und lasse die Anwendung da drauf laufen.

Die Anwendung bietet per Annotation Zugriffe auf Methoden die mir(Client) das zurückgeben was ich abfrage. Z.B. server:port/api/v1/menus/menu/0 und am ende eine 0 als id oder eine andere die mir dann die nötigen Daten liefert.

Das ist mein Stand!

Was passiert im Hintergrund?
Ich habe weder EJB CDI oder sonst noch was-> nur einen Web Modul-> Das bedeutet das es vollkommen ausreicht-> oder sollte ich Web Modul weglassen wenn ich die Daten auf einer Webseite nicht darstellen will?

Will ich reine Backendanwendung ohne einer Darstellung auf einer Webseite-> sollte ich EJB oder CDI nehmen aber mit einer Darstellung der Daten auf einer Webseite-> Webmodule?
 

SeriousD0nkey

Bekanntes Mitglied
Also was du beispielsweise mit CDI machen kannst ist, wie bereits genannt wurde, Dependency Injection. Das ganze macht Sinn, wenn du deine Anwendung in mehrere Unterprojekte (bspw. mit Maven) aufteilst. Damit erreichst du Unabhängigkeiten zwischen den jeweiligen Implementierungen (es ist also nicht zwingend nötig, macht aber schon Sinn dies zu nutzen). Aber dazu sollte man sich einlesen, dass ist zu komplex um dir im Forum diesen Prozess zu erklären.
 

stg

Top Contributor
Und zwar nicht direkt in die CDI API, sondern zuvor sollte man verstehen, was Dependency Injection überhaupt ist. Womit wir wieder an dem Punkt wären, dass keine Basis vorhanden ist, auf der man dir vernünftig irgendwas erklären könnte.

Die Anwendung bietet per Annotation Zugriffe auf Methoden die mir(Client) das zurückgeben was ich abfrage. Z.B. server:port/api/v1/menus/menu/0 und am ende eine 0 als id oder eine andere die mir dann die nötigen Daten liefert.
Ich hab auch mal ein Programm geschrieben ... mit Buchstaben hab ich das geschrieben! Und wenn ich es ausgeführt hab kamen die Daten! (Ungefähr den selben Informationsgehalt hat deine Aussage) Ich glaube dir mittlerweile auch nicht mehr, dass du das nicht extra machst....

Ich habe weder EJB CDI oder sonst noch was-> nur einen Web Modul-> Das bedeutet das es vollkommen ausreicht-> oder sollte ich Web Modul weglassen wenn ich die Daten auf einer Webseite nicht darstellen will?
Das Java EE 7 Web Profile beinhaltet unter anderem CDI 1.1 und EJB 3.2 lite.
Du hast also "nur" ein Web Modul und willst dieses Weglassen, weil du es nicht brauchst. Dann bleibt ja nichts mehr übrig, richtig?

Will ich reine Backendanwendung ohne einer Darstellung auf einer Webseite-> sollte ich EJB oder CDI nehmen aber mit einer Darstellung der Daten auf einer Webseite-> Webmodule?
Nochmal: Wer der Client deines Webservices ist, ist dem Webservice egal.
Und ob du CDI oder EJB verwenden solltest kann dir hier immer noch niemand beantworten. Wir kennen dein Projekt und deine Anforderungen nicht. Letzten Endes kann man dir nur sagen, was CDI und EJB ist (wie schon in Beitrag #4 geschehen!) und dann musst du solche Entscheidungen selbst treffen.
 

schmatko

Mitglied
Danke für eure "hilfreiche" Antworten, mir wurde in einem anderen Forum geholfen, da sind die Mitglieder irgendwie motivierter und hilfsbereiter
 

SeriousD0nkey

Bekanntes Mitglied
Danke für eure "hilfreiche" Antworten, mir wurde in einem anderen Forum geholfen, da sind die Mitglieder irgendwie motivierter und hilfsbereiter
Wenn du doch die Hilfsbereitschaft hier jetzt anzweifelst, dann kannst du ja jetzt beweisen, dass du hilfsbereit bist und deine Lösung (die du ja jetzt durch ein anderes Forum in Erfahrung gebracht hast) hier nochmal erläutern, um anderen Besuchern, die zufällig auf dieses Forum stoßen und die gleichen "Probleme" haben zu helfen.
 

schmatko

Mitglied
Ja, nee ... ist klar :rolleyes:
vermutlich bist Du da auch nicht so schnell beleidigend geworden, oder ???
Gruß Klaus
ich denke ich habe keinen beleidigt sondern einfach mal hingewiesen das es kein sinn macht Äußerung von sich zu geben die mich in keinster Weise weitergebracht haben.

Wenn du doch die Hilfsbereitschaft hier jetzt anzweifelst, dann kannst du ja jetzt beweisen, dass du hilfsbereit bist und deine Lösung......

Ja kann ich machen, werde dann gleich posten was mir geholfen hat
 

schmatko

Mitglied
JavaEE Architektur hat mehrere Komponenten die bereits implementiert sind oder zusätzliche als Framework mit rein können wie z.B Concurrency (ist für die asynchrone Verarbeitung zuständig)

Wie fängt man an, was ist zu beachten?

Die Architektur ist Brutal und vollständig nicht zu erläutern. Hier das wichtigste zum Start was mir auch geholfen hat:

Es gibt zwei Profile, einmal Web Profil und Full Profil

Web Profil beinhaltet alles das, was man für eine typische Webapplikation benötigt und der Vorteil ist das nicht benötigte Services abgeschaltet sind und es somit schlanker ist. (Full Profil habe nicht angeschaut)

Web Profil:
  • Servlets: Verarbeitung auf der Webebene
  • JSF: Darstellung im Webbrowser
  • EJB Lite: Geschäftslogik
  • JPA: Datenbankzugriffe
  • JSON –P: Übertragungstechnik

Das sind so paar Komponenten in den Webprofilen (nicht alle) die ermöglichen eine Webapplikation zu erstellen auf die man per REST mit einem Client oder auch im Browser zugreifen kann.

Bsp.: Will man zwei zahlen von einem Client auf einem Server berechnen lassen und das Ergebnis auf DB abspeichern:

Per HTTP greift man auf den Server zu und übergibt per REST zwei zahlen, das erfolgt in so genanntem „Web Container“. Dann kommt EJB ins Spiel der „EJB Container“ EJB führt die Berechnung durch und greift auf die Datenbank zu um es abzuspeichern. Man kann es als Klassen verstehen eine Klasse Web Darstellung/Abfrage=„Web Container“ andere Klasse die Logik=„EJB Container“. Zusammen ergibt das einen Webserver.

In eurer Entwicklungsumgebung, JavaEE auswählen mit einem Web Profile und/oder ausschaue nach den oben genannten Komponenten halten und mit auswählen, habe so die wichtigsten zum Start aufgezählt mit denen man was entwickeln kann.

Hoffe das der Einstieg somit jemandem klarer wird, ansonsten Fragen, werde soweit es geht auch es versuchen zu beantworten mit meinem Leien Wissen. Sollte ich da was falsch verstanden haben, könnt ihr mich gerne korrigieren, wird mir mehr helfen als die vorherigen Posts
 

VfL_Freak

Top Contributor
Moin,
ich denke ich habe keinen beleidigt
ok, nein, da hast Du wohl Recht - sorry, da war der Tippfehlerteufel am Werk!
Statt "beleidigend" wollte ich eigentlich "beleidigt" geschrieben haben, weil das die bewußte Wortwahl nahe legte ...

sondern (habe) einfach mal hingewiesen das es kein sinn macht Äußerung von sich zu geben die mich in keinster Weise weitergebracht haben
nun ja, wobei die Wortwahl "du sollst mich nicht belehren ..." und "ich will antworten ..." für ein Forum, wo auf freiwilliger Basis geholfen wird, schon sehr heftig sind!!

Gruß Klaus
 

stg

Top Contributor
Sollte ich da was falsch verstanden haben, könnt ihr mich gerne korrigieren, wird mir mehr helfen als die vorherigen Posts

Der komplette Inhalt deines Postings ist entweder falsch, sehr ungenau oder irrelevant in Bezug auf deine ursprüngliche Fragestellung.

Ich möchte dir gerne noch einmal ans Herz legen meine bisherigen Antworten hierzu erneut zu lesen. Vielleicht mit ein bisschen Abstand - du sollst dich von den Antworten nicht persönlich angegriffen fühlen. Menschen neigen dazu, dann schnell auf Durchzug zu schalten und nichts, was nicht exakt ihren Vorstellungen entspricht, gelten zu lassen.

Ich kann auch gerne wieder dein gesamtes Posting zerpflücken und auf jeden Punkt einzeln eingehen, aber das hast du bisher auch nicht sonderlich wertgeschätzt.

Web Profil beinhaltet alles das, was man für eine typische Webapplikation benötigt
Kann man so ausdrücken, ja. Es ist aber wichtig zu verstehen, was mit der Aussage wirklich gemeint ist. Java EE allgemein kann man als Rahmenarchitektur (beziehungsweise eigentlich nur als die Spezifikation einer solchen) verstehen, die Standard-Lösungen zu Standard-Problem auf einem höheren Abstraktionslevel bereitstellt. Das Web Profile beschränkt sich dabei auf die Standard-Probleme (und -Lösungen) hinsichtlich der Web-Wntwicklung.

und der Vorteil ist das nicht benötigte Services abgeschaltet sind und es somit schlanker ist. (Full Profil habe nicht angeschaut)
Es wird nichts an- oder abgeschaltet. Dein Anwendungsserver stellt die entsprechenden Funktionalitäten zur Verfügung oder eben nicht. Der Anwendungsserver selbst ist der Teil, der leichgewichtiger wird, wenn er nicht die vollständige Spezifikation implementiert. Ein solcher ist dann in der Regel nicht so Resourcen-hungrig, wie ein vollständiger Java EE Anwendungsserver. Du musst im Grunde nur wissen, welche Teile der Spezifikation dein Anwendungsserver implementiert und kannst diese dann in deiner eigenen Anwendung nutzen. Beschränkst du dich in deiner Anwendung auf das Java EE Web Profile, dann ist diese (theoretisch jedenfalls) beliebig auf einen anderen Anwendungsserver, welcher (nur) das Java EE Web Profile implementiert, portierbar.

Per HTTP greift man auf den Server zu und übergibt per REST zwei zahlen, das erfolgt in so genanntem „Web Container“. Dann kommt EJB ins Spiel der „EJB Container“ EJB führt die Berechnung durch und greift auf die Datenbank zu um es abzuspeichern. Man kann es als Klassen verstehen eine Klasse Web Darstellung/Abfrage=„Web Container“ andere Klasse die Logik=„EJB Container“. Zusammen ergibt das einen Webserver.

Die Daten werden nicht per REST übergeben. Die Aussage ergibt überhaupt keinen Sinn! Die Daten werden (in der Regel) per HTTP(s) an den Server übergeben. REST ist eine Eigenschaft des Webservices, der diese Daten verarbeitet. Das hatte ich aber auch in einem der vorherigen Postings bereits geschrieben... REST bedeutet in erster Linie einfach nur, dass der Service zustandslos ist. Das heißt insbesondere, dass jede Abfrage in sich geschlossen ist.
Der EJB Container führt deine Berechnungen nicht durch, das geschieht in "ganz normalem Java-Code". Der EJB Container ist auch nicht mit dieser Klasse für die Geschäftslogik gleichzusetzen, sondern der EJB Container ist ein Bestandteil des Anwendungsservers, der (u.A.) deine konkreten EJBs verwaltet. Du erstellst deine EJB nicht selbst, sondern fragst das Framework nach einer Instanz. Dadurch, dass das Framwork diese Instanz kennt, hat es die Möglichkeit in verschiedenster Art und Weise Einfluss auf das Geschehen zu nehmen.

auf die man per REST mit einem Client oder auch im Browser zugreifen kann.
Zu "REST" siehe oben. Desweiteren: Du scheinst den Begriff "Client" nicht richtig zu verstehen. Ein Webbrowser ist auch ein Client. Eine EJB kann auch ein Client einer anderen EJB oder eines WebServices sein. Ein WebService kann auch Client von was anderem sein. Ganz allgemein: ein A fragt ein B nach etwas. Optional antwortet B darauf an A. Dann ist A ein Client von B.
 

Ähnliche Java Themen

Neue Themen


Oben