title: HTTP Status 415 - Unsupported Media Type
body: <p>I am working on Java restful web service. While testing the restful service I am getting the responses correct for GET and DELETE methods but it is not working for POST and PUT methods. Can anyone help me? I have written the following code:</p>
  
  <p>StudentService.java</p>
  
  <pre><code>@Stateless
  @Path("students")
  public class StudentService extends StudentServiceLocal&lt;Students&gt; {
      @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&lt;Students&gt; findAll() {
          return super.findAll();
      }
  
      @GET
      @Path("{from}/{to}")
      @Produces({"application/xml", "application/json"})
      public List&lt;Students&gt; 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;
      }
  
  }
  </code></pre>
  
  <p>StudentServiceLocal.java</p>
  
  <pre><code>public abstract class AbstractFacade&lt;T&gt; {
      private Class&lt;T&gt; entityClass;
  
      public AbstractFacade(Class&lt;T&gt; 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&lt;T&gt; findAll() {
          javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
          cq.select(cq.from(entityClass));
          return getEntityManager().createQuery(cq).getResultList();
      }
  
      public List&lt;T&gt; 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&lt;T&gt; rt = cq.from(entityClass);
          cq.select(getEntityManager().getCriteriaBuilder().count(rt));
          javax.persistence.Query q = getEntityManager().createQuery(cq);
          return ((Long) q.getSingleResult()).intValue();
      }
  
  }
  </code></pre>
  
  <p>Students.java</p>
  
  <pre><code>@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) {
          // TODO: Warning - this method won't work in the case the id fields are not set
          if (!(object instanceof Students)) {
              return false;
          }
          Students other = (Students) object;
          if ((this.rollno == null &amp;&amp; other.rollno != null) || (this.rollno != null &amp;&amp; !this.rollno.equals(other.rollno))) {
              return false;
          }
          return true;
      }
  
      @Override
      public String toString() {
          return "com.ikanksha.rest.entity.Students[ rollno=" + rollno + " ]";
      }
  
  }
  </code></pre>