Tôi đang làm việc trên dịch vụ web an toàn của Java. Trong khi thử nghiệm dịch vụ an toàn, tôi nhận được câu trả lời đúng cho các phương thức GET và DELETE nhưng nó không làm việc cho các phương thức POST và PUT. Ai giúp tôi với? Tôi đã viết đoạn mã sau:Trạng thái HTTP 415 - Loại phương tiện không được hỗ trợ
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) {
// 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 && other.rollno != null) || (this.rollno != null && !this.rollno.equals(other.rollno))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.ikanksha.rest.entity.Students[ rollno=" + rollno + " ]";
}
}
Và bạn thử nghiệm nó như thế nào? Đó là vấn đề với người đưa ra yêu cầu, không phải với dịch vụ. – Esailija
Thông tin của bạn là gì? – Fildor
i m bằng cách sử dụng netbeans IDE để có sẵn công cụ để kiểm tra dịch vụ an toàn. –