JAVA REST - HTTP Status 405 - Method Not Allowed

17/12/2016

0

Boa tarde galera,

Estou implementando um serviço REST em Java, porém no método POST está apresentando a seguinte mensagem ao fazer a requisição via PostMan:
"HTTP Status 405 - Method Not Allowed".

No PostMan configurei o "Body" para "raw" com o tipo "JSON" e inseri o Json abaixo:
{
"password":"456",
"userName":"julia.andrade"
}


Segue minha classe UserService:
package rest;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import dao.UserDAO;
import model.User;

@Path("/user")
public class UserService {
	private static final String CHARSET_UTF8 = ";charset=utf-8";

	@POST
	@Path("/add")
	@Consumes(MediaType.APPLICATION_JSON + CHARSET_UTF8)
	@Produces(MediaType.TEXT_PLAIN)
	public String addUser(User user){
		String result;
		
		try{
			UserDAO.getInstance().addUser(user);
			result = "OK";
		}catch(Exception e){
			e.printStackTrace();
			result = "ERROR";
		}
		
		return result;
	}
}




Segue a classe UserDAO:
package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import model.*;

public class UserDAO {
	private static UserDAO instance;
	private SessionFactory sessionFactory;
	
	public static UserDAO getInstance(){
		if (instance == null){
			instance = new UserDAO();
		}

		return instance;
	}

	private UserDAO() {
		sessionFactory = getEntityManager();
	}

	private SessionFactory getEntityManager() {
		return new Configuration().configure().buildSessionFactory();
	}

	public void addUser(final User user) {
		Session session = sessionFactory.openSession();;
		session.beginTransaction();	
		
		session.persist(user);
		session.getTransaction().commit();
		
		session.close();
	}

}


O que pode estar causando esse comportamento?
Alex Andrade

Alex Andrade

Responder

Posts

17/12/2016

Marcio Souza

No Postman você selecionou o envio dos dados como POST?
Responder

17/12/2016

Alex Andrade

Sim, está como POST. PUT também está com o mesmo problema. GET e DELETE estão OK.
Estou utilizando o GlassFish, será que existe alguma configuração no servidor para informar os métodos HTTP autorizados?
Já verifiquei em vários fóruns mas até agora não encontrei a solução.
Responder

18/12/2016

Marcio Souza

Não tem nada haver com o GlassFish, o problema deve ser outro. Faça uma consulta pelo GET e pegue o JSON retornado e tente fazer um update (PUT) com ele, veja se funciona.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar