Est-il possible de définir un jax-rs interface de service séparé de sa mise en œuvre (avec eclipse et jersey)?
Je ne sais pas si le titre est déroutant, mais disons que j'ai de cette interface:
@Produces(MediaType.APPLICATION_JSON)
@Path("/user")
public interface UserService {
@GET
@Path("/{userId}")
public Response getUser(@PathParam("userId") Long userId);
}
Pourquoi quand j'essaie de mettre en œuvre une version d'Eclipse réécrit l'annotation pour la méthode de remplacement, mais pas pour la classe?
class UserServiceImpl implements UserService {
@Override
@GET
@Path("/{userId}")
public Response getUser(@PathParam("userId") Long userId) {
//TODO Auto-generated method stub
return null;
}
}
J'essaie de créer une définition de la norme pour le service web restful et puis avoir des implémentations différentes. Est quelque chose comme cela possible avec le standard de jax-rs? Suis-je le mauvais annotations, par hasard?
OriginalL'auteur dierre | 2013-06-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les annotations de l'héritage uniquement si vous n'utilisez pas tout
jax-rs
annotation sur la mise en œuvre de la classe: il est indiqué à la section 3.6 de la norme JSR-339.Vous redéfinir
@Path
et@Produces
pour la méthode, mais pas pour la classe.De sorte que le
Path
annotation dans votre code doit être sur la classe de béton:BTW, le cahier des charges nous encourage à reproduire les annotations sur les classes concrètes:
je voulais dire que vous pouvez le laisser sur l'interface pas le béton. de cette façon, vous pouvez faire l'interface disponible pour un client proxy.
Vous avez raison, mais il n'est pas encouragé la pratique. Peut-être qu'après la dernière édition, il est mieux indiqué.
J'ai trouvé que si je ajouter un POST et PathParam sur la méthode de l'interface, mais pas sur la mise en œuvre de la méthode de classe, je reçois 404. (À l'aide de jersey, grizzly).
La citation mentionnée dans cette réponse peut être trouvée dans de 3,6 Annotation de l'Héritage dans ce doc(pdf): download.oracle.com/otn-pub/jcp/jaxrs-2_0-edr2-spec/...
OriginalL'auteur Carlo Pellegrini