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?
openbook.rheinwerk-verlag.de
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.
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?
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
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?
Openbooks. Rheinwerk-Bücher kostenlos online lesen. Ein Service des Rheinwerk Verlags
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