Announcement

Collapse
No announcement yet.

Einfacher HelloWorld-Webservice mit Jakarta, Java14 und TomEE unter Eclipse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Einfacher HelloWorld-Webservice mit Jakarta, Java14 und TomEE unter Eclipse

    Hallo,

    ich hoffe mir kann jemand ohne viel Aufwand weiterhelfen. Ich bekomme es leider nicht alleine hin, aber es kann doch nicht so schwer sein.

    Ich versuche schon seit Tagen einen ganz einfachen HelloWorld-Webservice an den Start zu bringen, schaffe es aber trotzt tausendfacher Google-Suche nicht zum Erfolg. Eigentlich sollte es aber ganz einfach sein.
    Meine aktuelle Ausgangslage:

    Ich habe die neueste Version von Eclipse und Java 14 installiert. Da das Eclipse GlassFish-Plugin mit der neuesten Version von GlasFish nicht so wirklich funktioniert, habe ich mir den letzten TomEE Plus Server runtergeladen und bekomme diesen auch über Eclipse dann gestartet.

    Ich habe mir ein neues Dynamic Web Project angelegt, zu einem Maven-Projekt konfiguriert und mit folgenden Facets: Dynamic Web Module 4.0, Java 14, JavaScript 1.0 und JAX-RS 2.1. Als Runtime-Environment habe ich den oben erwähnten TomEE als Installationsverzeichnis angegeben mit Java 14 als JRE.

    Zum Testen habe ich mir eine statische HTML-Seite angelegt, welche ich auch nach dem Start des Servers abrufen kann.
    Für den Webservice habe ich dann eine Klasse welche "Application" erweitert erstellt und mit der Annotation @ApplicationPath("rest") versehen. Des Weiteren habe ich dann eine einfache Java-Klasse mit der Annotation @Path("/test") erstellt und eine Methode "public String helloworld()" mit den Annotationen @GET und @Path("/helloworld"). Importiert habe ich die entsprechenden Referenzen auf die Jakarta-Pakete die ich über Maven eingebunden habe.
    Eine web.xml habe ich nicht angelegt, da dies in der neusten Version wohl nicht mehr nötig ist.

    Starte ich jetzt den Server bekomme ich keine Fehler, aber versuche ich den Webservice unter "/rest/test/helloworld" aufzurufen bekomme ich ein 404, die statische Seite ist aber weiterhin erreichbar.

    Falls mir jemand helfen möchte und noch Infos benötigt, ergänze ich diese natürlich gerne.

  • #2
    Hast du die Klasse auch mit @RequestScoped annotiert...
    Christian

    Comment


    • #3
      Hallo Christian,

      erst einmal danke für deine äußerst schnelle Antwort.

      Nein, die Annotation hatte ich noch nicht verwendet, hatte diese aber auch noch nirgends in meinen gefundenen Bespielen gesehen.

      Ich habe die Annotation jetzt sowohl in der Application als auch in der anderen Klasse ausprobiert und es hat leider wieder den 404 gegeben.

      Hier mal meine beiden Klassen (jetzt wieder ohne @RequestScoped) :

      @Path("/test")
      public class HelloWorld
      {

      @GET
      @Path("/helloworld")
      public String helloworld() {
      return "Hello World!";
      }
      }

      @ApplicationPath("rest")
      public class JaxRsActivator extends Application {

      }


      Die statische Seite die ich unter WebContent liegen habe bekomme ich unter "localhost:8080/Test2/" oder auch "localhost:8080/Test2/index.html" angezeigt.
      Für den Aufruf des Webservice verwende ich "http://localhost:8080/Test2/rest/test/helloworld". Das sollte doch soweit ich das erkenne passen mit dem Pfad, oder??

      Comment


      • #4
        Test2 sollte raus

        https://www.logicbig.com/tutorials/j...e-mapping.html
        Christian

        Comment


        • #5
          Ok, ich dachte das wäre die BaseUrl des Projektes.

          Ohne Test2 funktioniert es aber leider auch nicht.

          An welche Klasse muss den @RequestScoped dran?? Oder brauche ich das doch nicht unbedingt?? Auf der Seite die Du verlinkt hast, habe ich das auch nicht gefunden.

          Ich bin langsam etwas am verzweifeln, so eine einfache Sache nicht hin zu bekommen. Ich würde das Ganze gerne auch verstehen. Ist denn der TomEE 9 Plus der richtige Server?? Ist der nicht verantwortlich zu "erkennen" dass es einen Webservice-Endpunkt zur Verfügung stellen soll??

          Comment


          • #6
            Was steht in den Logfiles
            Christian

            Comment


            • #7
              Hi Christian,

              ich habe im Dateisystem an einigen Ecken mal geschaut, aber ein richtiges Logfile habe ich nicht gefunden. Das was in der Console ausgegeben wird habe ich mal in den Anhang gepackt.
              Attached Files

              Comment


              • #8
                Das sieht so aus, als ob der Server startet, aber nie was macht. Also der request ihn nicht erreicht. Er schreibt so gar nichts rein. Zumindestens den 404er müsste man sehen
                Christian

                Comment


                • #9
                  Hatte ich oben schon mal erwähnt, also nur noch mal zur Info: die statische Seite zeigt er an.
                  Aber da wird der Server vermutlich nicht viel machen und dazu auch keine Logs haben.

                  Müsste der Server das war-File nicht irgendwie "scannen" um die Webservice-Endpunkte zu erstellen?? Vielleicht fehlt mir da am Server noch was....

                  Comment


                  • #10
                    Das WAR muss deployed werden. Und ein 404er steht bisher in jedem Logfile eines Servers
                    Der Server sollte
                    logs/catalina.date.log und logs/localhost..log files.
                    haben

                    https://stackoverflow.com/questions/...o-tomee-server
                    Christian

                    Comment


                    • #11
                      Ich starte den Server über Eclipse "Run as Server".

                      in der config vom TomEE steht in der logging.properties folgendes:

                      1catalina.org.apache.juli.AsyncFileHandler.level = FINE
                      1catalina.org.apache.juli.AsyncFileHandler.directo ry = ${catalina.base}/logs
                      1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
                      1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
                      1catalina.org.apache.juli.AsyncFileHandler.encodin g = UTF-8

                      2localhost.org.apache.juli.AsyncFileHandler.level = FINE
                      2localhost.org.apache.juli.AsyncFileHandler.direct ory = ${catalina.base}/logs
                      2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
                      2localhost.org.apache.juli.AsyncFileHandler.maxDay s = 90
                      2localhost.org.apache.juli.AsyncFileHandler.encodi ng = UTF-8

                      3manager.org.apache.juli.AsyncFileHandler.level = FINE
                      3manager.org.apache.juli.AsyncFileHandler.director y = ${catalina.base}/logs
                      3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
                      3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
                      3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

                      4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
                      4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
                      4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
                      4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
                      4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

                      Ich habe den Pfad von catalina.base über "catalina.sh version" nachgeschlagen. Den Ordner gibt's, aber dieser ist leer.

                      Comment


                      • #12
                        Wie du den Server startest ist unwesentlich.
                        Der Server startet. Lt. dem Log tut er das.
                        Dann entwickelt man eine Anwendung
                        Jetzt muss man dem Server sagen DA ist eine neue Anwendung. Deployen.
                        Sonst weiß der Server ja überhaupt nichts von einer neuen Anwendung
                        Einen Ordner logs solltest du haben
                        Christian

                        Comment


                        • #13
                          Deployed müsste die Anwendung doch sein, da die statische Seite verfügbar ist. Oder liege ich da falsch??

                          Den Ordner logs gibt es auch, nur ist dieser komplett leer.

                          Comment


                          • #14
                            Nein, die statische ist ja wohl nicht in dem WAR, oder?
                            Der leere Ordner deutet darauf hin, das der Server überhaupt nix macht
                            Christian

                            Comment


                            • #15
                              Ok, ich hatte jetzt gedacht das er das komplette Projekt, inklusive der statischen Seite im WebContent-Ordner, und den WebService in das WAR-File packt und dieses dann beim "Run on Server" auf dem TomEE deployed.

                              Dann schaue ich übers Wochende mal ob ich herausfinde was wirklich auf dem Server deployed worden ist und melde mich an dieser Stelle nochmal.
                              Bis hierhin schon mal Danke für deine Mühen.

                              Comment

                              Working...
                              X