I am working on Java restful web service. When testing the support service, I get the correct answers for the GET and DELETE methods, but it does not work for the POST and PUT methods. Can someone help me? I wrote the following code:
StudentService.java
@Stateless @Path("students") public class StudentService extends StudentServiceLocal<Students> { @PersistenceContext(unitName = "RestFulAPIPU") private EntityManager em; public StudentsFacadeREST() { super(Students.class); } @POST @Override @Consumes({"application/xml", "application/json"}) public String create(Students entity) { return(super.create(entity)); } @PUT @Override @Consumes({"application/xml", "application/json"}) public String edit(@PathParam("id") Students entity) { return(super.edit(entity)); } @DELETE @Path("{id}") public String remove(@PathParam("id") Integer id) { return(super.remove(super.find(id))); } @GET @Path("{id}") @Produces({"application/xml", "application/json"}) public Students find(@PathParam("id") Integer id) { return super.find(id); } @GET @Override @Produces({"application/xml", "application/json"}) public List<Students> findAll() { return super.findAll(); } @GET @Path("{from}/{to}") @Produces({"application/xml", "application/json"}) public List<Students> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) { return super.findRange(new int[]{from, to}); } @GET @Path("count") @Produces("text/plain") public String countREST() { return String.valueOf(super.count()); } @Override protected EntityManager getEntityManager() { return em; } }
StudentServiceLocal.java
public abstract class AbstractFacade<T> { private Class<T> entityClass; public AbstractFacade(Class<T> entityClass) { this.entityClass = entityClass; } protected abstract EntityManager getEntityManager(); public String create(T entity) { getEntityManager().persist(entity); return "inserted"; } public String edit(T entity) { getEntityManager().merge(entity); return "Updated"; } public String remove(T entity) { getEntityManager().remove(getEntityManager().merge(entity)); return "deleted"; } public T find(Object id) { return getEntityManager().find(entityClass, id); } public List<T> findAll() { javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery(); cq.select(cq.from(entityClass)); return getEntityManager().createQuery(cq).getResultList(); } 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(); } public int count() { javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery(); javax.persistence.criteria.Root<T> rt = cq.from(entityClass); cq.select(getEntityManager().getCriteriaBuilder().count(rt)); javax.persistence.Query q = getEntityManager().createQuery(cq); return ((Long) q.getSingleResult()).intValue(); } }
Students.java
@Entity @Table(name = "students") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Students.findAll", query = "SELECT s FROM Students s"), @NamedQuery(name = "Students.findByRollno", query = "SELECT s FROM Students s WHERE s.rollno = :rollno"), @NamedQuery(name = "Students.findByName", query = "SELECT s FROM Students s WHERE s.name = :name")}) public class Students implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @NotNull @Column(name = "rollno") private Integer rollno; @Size(max = 20) @Column(name = "name") private String name; public Students() { } public Students(Integer rollno) { this.rollno = rollno; } public Integer getRollno() { return rollno; } public void setRollno(Integer rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { int hash = 0; hash += (rollno != null ? rollno.hashCode() : 0); return hash; } @Override public boolean equals(Object object) {
Manohar bomma
source share