restful-service-Schnittstelle mit jersey

Kann ich erstellen, die einen Rest-Dienst mit Schnittstelle und Implementierung-Klasse? und alle JAX-RS, im Zusammenhang Importe gehen in das interface? ich bin mit jersey2.4 und jetty8.1.

hier ist mein interface:

MyService.java

package foo.bar; 

@Path("/abc")
public interface MyService {

     @GET
     @JSONP
     @Path("/method/{id}")
     public MyResponse getStuff(@PathParam("id") Integer id);

}

MyServiceImpl.java

package foo.bar.impl;

public class MyServiceImpl implements MyService {

     public MyServiceImpl() {}

     @Override
     public MyResponse getStuff(Integer id) {
         //do stuff
         return MyResponse;
     }
}

hier ist meine web.xml:

<servlet>
    <servlet-name>Scivantage REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>foo.bar</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Registrierte ich diese service-provider-Paket (foo.bar) aber es beschwert sich sagen, dies --
javax.- servlet.ServletException: Ein MultiException hat 1 Ausnahmen. Sie sind:|1. java.lang.NoSuchMethodException: Konnte nicht finden, eine geeignete Konstruktor foo.bar.MyService-Klasse.|

Als ich versuchte, mit der Umsetzung class-Paket (foo.bar.impl), es beschwert sich nämlich diesem --
Ich bekomme die HTTP-FEHLERMELDUNG 404; tut nichts anderes, keine exceptions auf der Konsole

Als ich versuchte, beide -- er sich darüber beschwert, der gleiche wie oben:

javax.- servlet.ServletException: Ein MultiException hat 1 Ausnahmen. Sie sind:|1. java.lang.NoSuchMethodException: Konnte nicht finden, eine geeignete Konstruktor foo.bar.MyService-Klasse.|

Können Sie bitte helfen? Was mache ich falsch?

  • Haben Sie jemals herausfinden? Ich bin mit dem gleichen Problem.
  • ja, aber nicht, wie ich es beschrieb. wir trennten uns-Ressource-Klasse und die service-Klasse. Ressource-Klasse "Komponieren", die von einem service-Objekt-Referenz. Sie können Folgen Sie der Vererbung Grundsätze für Ihre service-Objekt. hoffe, das hilft.
  • Ich fand das ist ein bug der mit dem Trikot, wenn man es automatisch suchen für die Anbieter/etc mit es-Paket Scannen. Wenn Sie sich explizit registrieren der Ressourcen - /provider-Klassen, die Sie nicht bekommen diesen Fehler.
Schreibe einen Kommentar