+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 23

Thema: JEE ohne Web

  1. #1
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Hallo Community,

    ich bin auf der Suche nach Java in der Cloud um Microservices, welche keine Web Funktionen benötigen, zu bauen. Hierfür ist lediglich eine Art Message Queue Anbindung (Kafka ist aus heutiger Sicht gesetzt, kein JMS) nötig. Das heißt der Microservice reagiert auf Messages, verarbeitet diese mit einer Datenbank und gibt über den selben Weg auch seine Antworten zurück.

    Normalerweise würde ich eine normale Java Consolenanwendung bauen, die ich über eine main(String ... args) starte. Dafür bräuchte ich nicht mehr. Nun finde ich, wenn ich nach Cloud und Java suche nur Servlet Container und Java EE Server ... das klingt ja alles erst mal nach Web. Mit welchen der beiden kann ich Java Microservices bauen, welche ohne Webfunktionen auskommen? Und mit welchen Technologien da drin wäre es am sinnvollsten, wenn ich Multithreaded Daten verarbeiten möchte (z.B. Servelt, EJB etc). Macht das überhaupt Sinn?

    PS. Webfunktionen sind für einen Microservice nicht verkehrt um z.B. Doku zu dem Service auszuliefern, von daher bin ich nicht böse, wenn ich sie hätte .. aber wichtig wäre es nicht.
    Geändert von freezly (11.10.2016 um 20:51 Uhr)

  2. #2
    Frequent User Megabyte
    Registriert seit
    01.08.2013
    Fachbeiträge
    1.737
    Genannt
    112 Post(s)
    Ein Microservice unterscheidet sich eigentlich nicht großartig von einem "Webservice". Allein vielleicht von der Auffassung, dass ein Webservice mit dem Webbrowser konsumiert wird.
    Ansonsten sind REST-Schnittstellen Stand der Technik und die werden in der Regel ebenfalls über HTTP bedient.
    Ob die Ausgabe jetzt HTML, XML, JSON oder sonst ein Text ist, ist dabei doch egal.

    Gerade für Microservices bietet sich wohl etwas leichtgewichtiges wie ein einfacher (eingebetteter) Servletcontainer an. Dazu dann ein passendes Webframework, welches ggf. auch explizit REST-Unterstützung hat (Spring bietet hier alles, was man braucht).

  3. #3
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    Du erwähnst, dass du keine Webfunktionen möchtest, aber Daten mit Servlets verarbeiten... das ist leider ein Widerspruch: https://de.wikipedia.org/wiki/Servlet

    Java EE ist nicht an das Web gekoppelt. Es bietet sich zwar für die meisten Services an, ist hier aber keine Pflicht. Wenn du "Java EE Server" gelesen hast, sollte dir das den Grundstein legen, alle JEE Services nutzen zu können. Von Kafka habe ich jetzt persönlich mal gar keine Ahnung, aber in einem Java EE Container kannst du beliebige EJB definieren, laut diesem Artikel haben sich da auch schon diverse Leute Gedanken drum gemacht: Apache Kafka – New messaging way

    Hier haben sie einen Kafka Consumer (als Singleton) definiert, der dann theoretisch die empfangenen Daten an andere Beans zur Verarbeitung weitergeben kann, im besten Fall sind diese gepoolt und skalieren somit (bei mehr Last werden mehr Instanzen hiervon erzeugt).
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  4. #4
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    @cmrudolph : Ja, Das Thema ist genau, dass es kein Rest gibt, sondern nur ein Messageing Service (Kafka), an den sich das Stück Microservice koppelt. Somit kommt aber auch das JEE interne Messaging nicht in Frage. @inv_zim : Dass Servlets nicht wirklich geeignet sind, obgleich sie als Startpunkt dienen könnten, ist mir durchaus bewusst. Daher auch meine Frage. Danke für den Link. Ich werde es mir durchlesen.

  5. #5
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    @freezly nicht falsch verstehen: Servlets können für eine Kommunikation durchaus geeignet sein, sie sind aber für HTTP Kommunikation gedacht, und gerade das wolltest du ja explizit nicht.

    Solltest du es am Ende umsetzen bin ich aber am Ergebnis auf jeden Fall interessiert. Hast du schon vorab Erfahrungen mit Kafka, was den Datendurchsatz angeht? Ich nehme mal an, du hast an die Transferraten hohe Anforderungen, oder?
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  6. #6
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Zitat Zitat von inv_zim Beitrag anzeigen
    @freezly Servlets können für eine Kommunikation durchaus geeignet sein, sie sind aber für HTTP Kommunikation gedacht, und gerade das wolltest du ja explizit nicht.
    Naja, man könnte ein Servlet maximal als Startpunkt missbrauchen. Im Init einen Thread starten, welcher dann die Kafka Messages entgegen nimmt und in weiteren Threads verarbeitet. Da die Servlets auch einen Stop haben, könnte man die Threads auch sauber beenden. Aber dafür sind sie einfach nicht gedacht und ich weiß nicht, was man sich da für Probleme noch rein holt.


    Zitat Zitat von inv_zim Beitrag anzeigen
    @freezly Solltest du es am Ende umsetzen bin ich aber am Ergebnis auf jeden Fall interessiert.
    OK. Ich werde berichten

    Zitat Zitat von inv_zim Beitrag anzeigen
    @freezly Hast du schon vorab Erfahrungen mit Kafka, was den Datendurchsatz angeht? Ich nehme mal an, du hast an die Transferraten hohe Anforderungen, oder?
    Ich habe aktuell das erste Projekt mit Kafka und habe bisher nur Testfälle im Kafka durchgespielt. Der Durchsatz in meinen Testfällen hat schon beeindruckt, obgleich ich kaum Vergleiche habe. Im Inet wird ja von einer sehr hohen Durchsatzrate berichtet. Ich bin mir nicht ganz sicher, wie weit es gehen wird, aber in meinem aktuellen Projekt muss der Messagebroker sehr gut mitskalieren können. Was auch sehr gut ist in Kafka: Wenn ich es bräuchte könnte ich alle Messages von Anfang an noch mal abspielen. Ich habe zwar noch keinen konkreten Anwendungsfall, aber schon allein zu wissen, dass alles noch mal verfügbar ist beruhigt etwas.
    Durch die Technik kann man mit Kafka sowohl sequentiell als auch parallel abarbeiten lassen. Alles gesteuert durch Konfiguration im Kafka, was in Kombination interessante Szenarien ermöglicht.

  7. #7
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    Zitat Zitat von freezly Beitrag anzeigen
    Naja, man könnte ein Servlet maximal als Startpunkt missbrauchen. Im Init einen Thread starten, welcher dann die Kafka Messages entgegen nimmt und in weiteren Threads verarbeitet. Da die Servlets auch einen Stop haben, könnte man die Threads auch sauber beenden
    Ah, jetzt habe ich verstanden was du meinst. Hier könntest du ganz normale EJB benutzen, welche du als Singleton deklarierst:

    Java Code:
    1. @Startup
    2. @Singleton
    3. public class StatusBean {
    4.   private String status;
    5.  
    6.   void init {
    7.     status = "Ready";
    8.   }
    9.   ...
    10. }
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  8. #8
    Frequent User Megabyte
    Registriert seit
    01.08.2013
    Fachbeiträge
    1.737
    Genannt
    112 Post(s)
    Wofür brauchst du dann in deinem Anwendungsfall noch einen JavaEE-Server?
    Wenn es dir lediglich um das Dependency-Management geht, dann kannst du auch Guice oder Spring (ohne WebMVC) verwenden.
    Auch die anderen Building-Blocks wie ORM lassen sich standalone ohne JavaEE-Server verwenden.

  9. #9
    User int
    Registriert seit
    25.08.2013
    Fachbeiträge
    36
    Genannt
    4 Post(s)
    Schaue dir mal https://spring.io/ (Spring Boot) an. Da findest du genau das, was du suchst.

    viele Grüße
    Steven

  10. #10
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    @cmrudolph + @StevenHachel : Das ist ja das witzige ... ich brauche das ganze nicht. Würde ich einen normalen Service schreiben, würde ich bei public static void main(String...args) anfangen und die Sache wäre gegessen. Allerdings, wie ich im meinem Eingangspost geschrieben habe: Mir steht in der Cloud Umgebung, nur Java EE und Tomcats zur Verfügung.

    *** Edit ***
    @StevenHachel : Ach ... ja Spring Boot wäre der Weg, den ich auch bevorzugen würde.

  11. #11
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    Dann könntest du doch auch eine "klassische" Spring Anwendung in einem gehosteten Tomcat deployen? Oder vielleicht ist ja auch das für dich interessant: Spring Cloud

    Ich hatte erst verstanden, dass du Cloud Features benutzen möchtest, weil du hier die klassische Skalierbarkeit möchtet? Wenn das nicht der Fall ist, ist JEE natürlich maßlos übertrieben, ganz klar.
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  12. #12
    Frequent User Megabyte
    Registriert seit
    01.08.2013
    Fachbeiträge
    1.737
    Genannt
    112 Post(s)
    Ich glaube, ich habe den Abholpunkt immer noch nicht zu 100% gefunden - wahrscheinlich, weil unsere Definitionen von "Cloud" auseinander laufen.
    Habe ich es jetzt richtig verstanden, dass du ein Platform-as-a-Service-Produkt einsetzen möchtest und nicht selbst hosten willst?
    Ich ging nämlich die ganze Zeit davon aus, dass du das Hosting selbst übernehmen möchtest. Cloud kann in diesem Sinne nämlich auch eine EC2-Instanz (oder eine angepasste EC2-Instanz aus dem AWS Elastic Beanstalk-Katalog) sein, auf der du deine Anwendung installierst.

    Wenn du einen Service hast, auf dem du nur die Möglichkeit hast, war oder ear-Dateien zu deployen, würde ich das leichtgewichtigste nehmen (einen Tomcat) und dann keine Servlets installieren.
    Dennoch kannst du die Servletspezifikation verwenden, um deine Anwendung zu initialisieren (ServletContainerInitializer) und zu terminieren (ServletContextListener).
    Ob da dann Anfragen via HTTP reinkommen, interessiert den Tomcat dann eher weniger.

  13. #13
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Ja. Es wird ein PaaS Angebot sein. So unterschiedlich kann man über den selben Begriff denken .

    Das mit Tomcat und Spring werde ich mal ins Auge fassen. Das klingt gut.

  14. #14
    User int
    Registriert seit
    25.08.2013
    Fachbeiträge
    36
    Genannt
    4 Post(s)
    Gute Entscheidung. Du glaubst nicht, wie schnell du eine Anwendung mit Anbindung an eine Cloud geschrieben hast.
    Netflix ist ganz groß darin. Die nutzen genau das.

    viel Spaß
    Steven

  15. #15
    Projekt-Moderator Butterfaces Halbes Megabyte Avatar von Sym
    Registriert seit
    31.07.2013
    Fachbeiträge
    576
    Genannt
    28 Post(s)
    Wenn Du bei der JEE-Welt (wie im Titel) bleiben möchtest, kannst Du Dir auch den Wildfly-Swarm ansehen. Der funktioniert ähnlich gut.
    www.butterfaces.org = JSF 2 + Bootstrap + JQuery = awesome
    https://github.com/larmic

  16. #16
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    @StevenHachel : Naja ... das Gefühl habe ich momentan nicht ... aber vielleicht kommt es wenn die ersten Services mal laufen von allein. Bis dahin wird es wohl noch viel Arbeit sein ... ich wäre vmtl. jetzt bereits fertig mit einem lauffähigen Prototypen wenn ich es selbst gehostet hätte. Nunja ... jede neue Technik bringt etwas Lernoverhead mit sich . Ist schön zu hören, dass andere es können ... somit habe ich Hoffnung.
    @Sym : Wildfly-Swarm ist scheinbar relativ neu (2016 nach den Blog Einträgen). Hast du Erfahrung? Kannst du berichten, wie es sich anfühlt, wo es noch hapert usw? Hast du in dem Zusammenhang Erfahrung mit CloudFoundry?

    *** Edit ***

    Ich werde ein CloudFoundry System (IBM Bluemix) zur Verfügung haben: Ich habe nun auch mal sowas versucht: https://github.com/cloudfoundry/java-buildpack ... Allerdings habe ich auch so meine Anwendung nicht zum laufen gebracht. Meine Main Class wurde nicht gefunden. Und das Filesystem kann man auch nicht einsehen, bzw. das deployment zur Recherche downloaden. Das sind die Sachen die ziemlich aufhalten, bis man es einmal hin bekommen hat .

  17. #17
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    Jetzt kommen wir natürlich in den bösen, proprietären Bereich, aber kennst du in Bluemix den Message Hub? Der basiert auf Kafka:

    https://console.ng.bluemix.net/catal...es/message-hub
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  18. #18
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    @inv_zim : Ja Klar kenne ich den ... den will ich nutzen ... da das aber ursprünglich nicht Thema war, fand ich es nicht erwähnenswert ... und der macht mir grad sowas von Probleme mit der Authentifizierung ... was ich im Netz dazu finde scheint nicht zu funktionieren. Das selbe in grün mit MongoDB ... irgendwelche Zertifikatsmeldungen im StackTrace ... mit Zertifikaten stehe ich ziemlich auf dem Kriegsfuss.
    Das ist das, was ich mit LernOverhead meinte ... ist aber aktuell nervig, da alles nur schleppend voran geht.

  19. #19
    User int
    Registriert seit
    25.08.2013
    Fachbeiträge
    36
    Genannt
    4 Post(s)
    Je mehr du dazu lernst, desto mehr weißt du am Ende auch. Kann ja nicht schaden, hihi

  20. #20
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    370
    Genannt
    31 Post(s)
    Zitat Zitat von freezly Beitrag anzeigen
    und der macht mir grad sowas von Probleme mit der Authentifizierung
    Das klingt jetzt nach neuem Thread, vielleicht kennt sich ja hier jemand aus..
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

+ Antworten Thema als "gelöst" markieren
Seite 1 von 2 1 2 LetzteLetzte

Direkt antworten Direkt antworten

Schreibe folgende Buchstabenfolge rückwärts: ssenriaF

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Optional ohne if
    Von bygones im Forum Allgemeine Themen
    Antworten: 14
    Letzter Beitrag: 09.06.2016, 10:06
  2. (Variablen) Zeiten ohne Datum
    Von famco im Forum Java-Grundlagen
    Antworten: 10
    Letzter Beitrag: 15.08.2013, 14:22
  3. URL ohne Smilys
    Von SlaterB im Forum Kritiken & Anregungen
    Antworten: 23
    Letzter Beitrag: 08.08.2013, 22:33
  4. (Erste Schritte) JInternalFrame ohne Titelleiste
    Von SoEinTyp im Forum Java-Grundlagen
    Antworten: 32
    Letzter Beitrag: 07.08.2013, 17:04
  5. JSF ohne JavaScript
    Von JSeann im Forum Java Enterprise Edition (Java EE)
    Antworten: 2
    Letzter Beitrag: 12.11.2011, 10:01

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •