Jersey Konflikt bei der Produktion von Medientypen

Ich probiere gerade Jersey aus, folgtediese Link zum Einrichten eines Webdienstes in Netbeans. Ich habe meine Entitätsklassen und meine REST-Klassen. Es funktioniert, um Objekte (in diesem Fall Benutzerobjekte) von einem javafx2-Client hinzuzufügen, zu bearbeiten, zu löschen und anzufordern.

Jetzt versuche ich jedoch, meinem Webservice eine neue Methode für eine einfache Authentifizierung hinzuzufügen. Zuerst habe ich eine neue benannte Abfrage (Users.login) in die Users.java-Datei eingefügt:

@NamedQueries({
    @NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"),
    @NamedQuery(name = "Users.login", query = "SELECT u FROM Users u WHERE u.username = :username AND u.password = :password"),
    @NamedQuery(name = "Users.findById", query = "SELECT u FROM Users u WHERE u.id = :id"),
    @NamedQuery(name = "Users.findByUserlevel", query = "SELECT u FROM Users u WHERE u.userlevel = :userlevel"),
    @NamedQuery(name = "Users.findByDisabled", query = "SELECT u FROM Users u WHERE u.disabled = :disabled")
})

Anschließend habe ich meiner UsersFacadeREST.java-Datei (generiert von Netbeans 7.2) folgenden Code hinzugefügt:

@GET
@Path("{username}/{password}")
@Produces({"application/xml", "application/json"})
public Users login(@PathParam("username") String username, @PathParam("password") String password) {
    return em.createNamedQuery("login", Users.class)
            .setParameter("username", username)
            .setParameter("password", password)
            .getSingleResult();
}

Beim Versuch, den Webdienst bereitzustellen, wird jedoch die folgende Fehlermeldung angezeigt:

SEVERE: Producing media type conflict. The resource methods public entities.Users service.UsersFacadeREST.login(java.lang.String,java.lang.String) and public java.util.List service.UsersFacadeREST.findRange(java.lang.Integer,java.lang.Integer) can produce the same media type

Als Neuling habe ich keine Ahnung, warum die login () -Methode einen Konflikt mit findRange () verursacht. Die erste hat 2 String-Parameter und gibt ein Users-Objekt, die zweite hat 2 Integer-Parameter und gibt ein List-Objekt zurück? Gibt es eine Möglichkeit, dieses Problem zu beheben, da einige benutzerdefinierte Abfragen zu meinem Webservice hinzugefügt werden müssen?

Zur Vervollständigung:

@GET
@Path("{from}/{to}")
@Produces({"application/xml", "application/json"})
public List<Users> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
    return super.findRange(new int[]{from, to});
}

Code in der Superklasse (AbstractFacade.java)

public List<T> findRange(int[] range) {
    javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
    cq.select(cq.from(entityClass));
    javax.persistence.Query q = getEntityManager().createQuery(cq);
    q.setMaxResults(range[1] - range[0]);
    q.setFirstResult(range[0]);
    return q.getResultList();
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage