Jersey RestServer mit Resourcen ausführen

lam_tr

Top Contributor
Hallo zusammen,

bevor ich mit dem Problem kommen, bin ich bewusst dass es einfachere Lösungen gibt wie Spring Boot, etc. gibt. Ich bin aber mal einen RestServer with Resourcen von Hand aus selber machen.

Ich kriege das Beispiel Programm von Java Insel nicht zum laufen, hat jemand da eine Idee?

Folgende Bibliotheken habe ich mir besorgt:
asm-3.1.jar
jackson-core-2.11.2.jar
jersey-bundle-1.19.4.jar
json-20200518.jar
jsr311-api-1.1.1.jar

Weiter habe ich die klassen in mein Projekt kopiert.

Code:
package restserver.example;

import java.io.IOException;

import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.net.httpserver.HttpServer;

public class RestServer {

    public static void main(String[] args) throws IllegalArgumentException, IOException {
        HttpServer server = HttpServerFactory.create( "http://localhost:8080/rest" );
        server.start();
    }
}

Code:
package restserver.example.controller;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path( "message" )
public class MessageResource
{
  @GET
  @Produces( MediaType.TEXT_PLAIN )
  public String message()
  {
    return "Yea! ";
  }
}

Wie kann ich dem Jersey Container sagen. Lade den Controller restserver.example.controller.MessageResource in den Container? Kann man das manuell machen?

Sobald die Anwendung gestartet wird, bekomme ich folgende Fehlermeldung. Das Ganze läuft unter Java 1.8.0_241. Die Jersey API ist lauft MVN Repository schon sehr veraltet. Aber so wie es ist, habe ich schon mal zum Laufen bekommen.

Wie kann ich die Config Datei für Jersey konfigurieren und kann ich es direkt im Classpath überall ablegen?

Code:
Sep 11, 2020 11:56:41 AM com.sun.jersey.api.core.ClasspathResourceConfig init
INFORMATION: Scanning for root resource and provider classes in the paths:
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\bin
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\libs\jackson-core-2.11.2.jar
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\libs\jersey-bundle-1.19.4.jar
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\libs\json-20200518.jar
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\libs\jsr311-api-1.1.1.jar
  C:\Development\eclipse-modeling-2020-06-R\eclipse-workspace\restserver.example\libs\asm-3.1.jar
Exception in thread "main" java.lang.IllegalArgumentException
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424)
    at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:138)
    at com.sun.jersey.core.spi.scanning.JarFileScanner.scan(JarFileScanner.java:97)
    at com.sun.jersey.core.spi.scanning.JarFileScanner$1.f(JarFileScanner.java:74)
    at com.sun.jersey.core.util.Closing.f(Closing.java:71)
    at com.sun.jersey.core.spi.scanning.JarFileScanner.scan(JarFileScanner.java:71)
    at com.sun.jersey.core.spi.scanning.FilesScanner.scan(FilesScanner.java:83)
    at com.sun.jersey.core.spi.scanning.FilesScanner.scan(FilesScanner.java:74)
    at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:80)
    at com.sun.jersey.api.core.ClasspathResourceConfig.init(ClasspathResourceConfig.java:119)
    at com.sun.jersey.api.core.ClasspathResourceConfig.<init>(ClasspathResourceConfig.java:101)
    at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:263)
    at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:246)
    at com.sun.jersey.api.container.httpserver.HttpServerFactory.create(HttpServerFactory.java:117)
    at com.sun.jersey.api.container.httpserver.HttpServerFactory.create(HttpServerFactory.java:92)
    at restserver.example.RestServer.main(RestServer.java:11)

Hat da jemand eine Idee dazu?

Grüße
lam

P.S: Okay das mit der Config kann man auch über Annotation lösen. https://riptutorial.com/jersey/example/12837/java-jersey-configuration
 

lam_tr

Top Contributor
Für die jenigen die auch daran interessiert sind, es ist wahrscheinlich ein Versionsproblem mit Java 8. Bei Jersey 3.0 M6 läuft alles wunderbar.
 

Ähnliche Java Themen

Neue Themen


Oben