RESTful Web Service no JDeveloper 12c
Devido o REST (Representational State Transfer) ser leve, simples e flexível, muitos desenvolvedores estão construindo e explorando os RESTful Web Services, tornando-o muito popular, hoje em dia. De acrodo com Roy Fielding, REST é um “estilo arquitetônico” que, basicamente, explora a tecnologia e protocolos existentes da Web. RESTful é normalmente usado para se referir a serviços web que implementam a arquitetura REST.
Neste post, você que vai aprender como construir um RESTful Web Service usando o JDeveloper 12c (12.1.3). Faça o download do aplicativo de amostra: JDevRESTApp.zip.
Crie um Custom Application.
Defina o Application Name como JDevRESTApp, Application Package Prefix como br.com.waslleysouza e clique em Avançar.
Nomeie o projeto como Model, selecione EJB e Java como Project Features e clique em Next.
Mude o Default Package para br.com.waslleysouza.model e clique em Finish.
Crie a Entidade Employees.
Na janela Applications, clique com o botão direito no Projeto Model e escolha New > From Gallery.
Na caixa de diálogo New Gallery, escolha Business Tier > EJB > Entities from Tables e clique em OK.
Na etapa 2 do Criar Entidades de diálogo Tabelas, clique em Next.
No Step 3, clique em Next.
No Step 4, selecione a conexão de banco de dados e clique em Next.
No Step 5, selecione a tabela Employees e clique em Next.
No Step 6, clique em Next.
No Step 7, clique em Finish.
Abra o arquivo Employees.java e execute os seguintes passos:
- Anote a classe com @XmlRootElement.
- Eu acho que existe algum bug quando o JDev gera entidades de tabelas, pois a propriedade SALARY não é anotada. Anote-a com @Column(name = “SALARY”).
- Anote as propriedades employeesList e employees com @XmlTransient. Anote os acessores getEmployeesList e getEmployees também.
Crie o Employees Session Bean.
Na janela Applications, clique com o botão direito no Projeto Model e escolha New > From Gallery.
Na caixa de diálogo New Gallery, escolha Business Tier > Session Bean, e clique em OK.
Na caixa de diálogo Create Session Bean, altere o nome do EJB para EmployeesService e clique em Next.
Desmarque todos os métodos e clique em Finish.
Adicione os seguintes métodos para EmployeesService, EmployeesServiceBean e EmployeesServiceLocal.
public Employees persistEmployee(Employees employee) {
em.persist(employee);
return employee;
}
public Employees mergeEmployee(Employees employee) {
Employees currentEmployee = getEmployee(employee.getEmployeeId());
if (employee.getEmail() != null)
currentEmployee.setEmail(employee.getEmail());
if (employee.getFirstName() != null)
currentEmployee.setFirstName(employee.getFirstName());
if (employee.getLastName() != null)
currentEmployee.setLastName(employee.getLastName());
if (employee.getHireDate() != null)
currentEmployee.setHireDate(employee.getHireDate());
if (employee.getJobId() != null)
currentEmployee.setJobId(employee.getJobId());
if (employee.getPhoneNumber() != null)
currentEmployee.setPhoneNumber(employee.getPhoneNumber());
if (employee.getSalary() != null)
currentEmployee.setSalary(employee.getSalary());
if (employee.getCommissionPct() != null)
currentEmployee.setCommissionPct(employee.getCommissionPct());
return em.merge(employee);
}
public void removeEmployee(Employees employee) {
employee = em.find(Employees.class, employee.getEmployeeId());
em.remove(employee);
}
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public List<Employees> getEmployees() {
return em.createNamedQuery("Employees.findAll", Employees.class).getResultList();
}
public Employees getEmployee(Integer employeeId) {
if (employeeId != null) {
return em.find(Employees.class, employeeId);
}
return null;
}
Crie um REST Web Service Project.
No Step 1, clique em Next.
No Step 2, altere o Default Package para br.com.waslleysouza.webservice e clique em Finish.
Clique duas vezes no Projeto WebService, adicione o Projeto Model como Dependent Project, e clique em OK.
Crie o Employees RESTful Service.
Na janela Applications, clique com o botão direito no Projeto Rest e selecione New > From Gallery.
Na caixa de diálogo New Gallery, escolha General > Java Class e clique em OK.
Na caixa de diálogo Create Java Class, altere o nome para EmployeesResource e clique em OK.
Copie o seguinte código dentro de sua classe:
@Stateless
public class EmployeesResource {
@EJB
EmployeesServiceLocal employeesService;
public EmployeesResource() {
super();
}
public void create(Employees employee) {
employeesService.persistEmployee(employee);
}
public void update(Employees employee) {
employeesService.mergeEmployee(employee);
}
public void delete(int id) {
Employees employee = getById(id);
if (null != employee) {
employeesService.removeEmployee(employee);
}
}
public Employees getById(int id) {
return employeesService.getEmployee(id);
}
public List<Employees> findAll() {
return employeesService.getEmployees();
}
}
Na janela Applications, clique com o botão direito na classe EmployeesResource e escolha Create RESTful Service.
Escolha JAX-RS 2.0 Style e clique em Next.
Configure o RESTful Service e clique em Finish.
Na caixa de diálogo Return Type Warning, clique em OK.
Este é o resultado!
Feito!
Para testar o RESTful Service, clique com o botão direito na classe EmployeesResource e escolha Test Web Service.
Você pode testar cada operação de serviço utilizando o HTTP Analyzer.