{"id":631,"date":"2015-01-25T13:17:31","date_gmt":"2015-01-25T16:17:31","guid":{"rendered":"http:\/\/www.profissionaloracle.com.br\/swillians\/2015\/01\/25\/restful-web-service-no-jdeveloper-12c\/"},"modified":"2024-02-22T19:07:22","modified_gmt":"2024-02-22T22:07:22","slug":"restful-web-service-no-jdeveloper-12c","status":"publish","type":"post","link":"https:\/\/www.profissionaloracle.com.br\/2015\/01\/25\/restful-web-service-no-jdeveloper-12c\/","title":{"rendered":"Construa um RESTful Web Service usando o JDeveloper 12c"},"content":{"rendered":"\n

<\/p>\n\n\n\n

RESTful Web Service no JDeveloper 12c<\/h3>\n\n\n\n

Devido o REST (Representational State Transfer) ser leve, simples e flex\u00edvel, muitos desenvolvedores est\u00e3o construindo e explorando os RESTful Web Services, tornando-o muito popular, hoje em dia. De acrodo com Roy Fielding, REST \u00e9 um “estilo arquitet\u00f4nico” que, basicamente, explora a tecnologia e protocolos existentes da Web. RESTful \u00e9 normalmente usado para se referir a servi\u00e7os web que implementam a arquitetura REST.<\/p>\n\n\n\n

Neste post, voc\u00ea que vai aprender como construir um RESTful Web Service usando o JDeveloper 12c (12.1.3). Fa\u00e7a o download do aplicativo de amostra: JDevRESTApp.zip<\/a>.<\/p>\n\n\n\n

Crie um Custom Application.<\/p>\n\n\n\n

Defina o Application Name como JDevRESTApp, Application Package Prefix como br.com.waslleysouza e clique em Avan\u00e7ar.<\/p>\n\n\n\n

Nomeie o projeto como Model, selecione EJB e Java como Project Features e clique em Next.<\/p>\n\n\n\n

Mude o Default Package para br.com.waslleysouza.model e clique em Finish.<\/p>\n\n\n\n

Crie a Entidade Employees.<\/p>\n\n\n\n

Na janela Applications, clique com o bot\u00e3o direito no Projeto Model e escolha New > From Gallery.<\/p>\n\n\n\n

Na caixa de di\u00e1logo New Gallery, escolha Business Tier > EJB > Entities from Tables e clique em OK.<\/p>\n\n\n\n

Na etapa 2 do Criar Entidades de di\u00e1logo Tabelas, clique em Next.<\/p>\n\n\n

\n
\"RESTful
<\/figcaption><\/figure><\/div>\n\n\n

No Step 3, clique em Next.<\/p>\n\n\n

\n
\"\"
<\/figcaption><\/figure><\/div>\n\n\n

No Step 4, selecione a conex\u00e3o de banco de dados e clique em Next.<\/p>\n\n\n

\n
\"\"
<\/figcaption><\/figure><\/div>\n\n\n

No Step 5, selecione a tabela Employees e clique em Next.<\/p>\n\n\n

\n
\"\"
<\/figcaption><\/figure><\/div>\n\n\n

No Step 6, clique em Next.<\/p>\n\n\n

\n
\"\"
<\/figcaption><\/figure><\/div>\n\n\n

No Step 7, clique em Finish.<\/p>\n\n\n

\n
\"\"
<\/figcaption><\/figure><\/div>\n\n\n

Abra o arquivo Employees.java e execute os seguintes passos:<\/p>\n\n\n\n

    \n
  • Anote a classe com @XmlRootElement.<\/li>\n\n\n\n
  • Eu acho que existe algum bug quando o JDev gera entidades de tabelas, pois a propriedade SALARY n\u00e3o \u00e9 anotada. Anote-a com @Column(name = “SALARY”).<\/li>\n\n\n\n
  • Anote as propriedades employeesList e employees com @XmlTransient. Anote os acessores getEmployeesList e getEmployees tamb\u00e9m.<\/li>\n<\/ul>\n\n\n
    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    Crie o Employees Session Bean.<\/p>\n\n\n\n

    Na janela Applications, clique com o bot\u00e3o direito no Projeto Model e escolha New > From Gallery.<\/p>\n\n\n\n

    Na caixa de di\u00e1logo New Gallery, escolha Business Tier > Session Bean, e clique em OK.<\/p>\n\n\n\n

    Na caixa de di\u00e1logo Create Session Bean, altere o nome do EJB para EmployeesService e clique em Next.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    Desmarque todos os m\u00e9todos e clique em Finish.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    Adicione os seguintes m\u00e9todos para EmployeesService, EmployeesServiceBean e EmployeesServiceLocal.<\/p>\n\n\n\n

    public Employees persistEmployee(Employees employee) {\n\n  em.persist(employee);\n\n  return employee;\n\n}\n\npublic Employees mergeEmployee(Employees employee) {\n\n  Employees currentEmployee = getEmployee(employee.getEmployeeId());\n\n  if (employee.getEmail() != null) \n\n    currentEmployee.setEmail(employee.getEmail());\n\n  if (employee.getFirstName() != null)\n\n    currentEmployee.setFirstName(employee.getFirstName());\n\n  if (employee.getLastName() != null)\n\n    currentEmployee.setLastName(employee.getLastName());\n\n  if (employee.getHireDate() != null)\n\n    currentEmployee.setHireDate(employee.getHireDate());\n\n  if (employee.getJobId() != null)\n\n    currentEmployee.setJobId(employee.getJobId());\n\n  if (employee.getPhoneNumber() != null)\n\n    currentEmployee.setPhoneNumber(employee.getPhoneNumber());\n\n  if (employee.getSalary() != null)\n\n    currentEmployee.setSalary(employee.getSalary());\n\n  if (employee.getCommissionPct() != null)\n\n    currentEmployee.setCommissionPct(employee.getCommissionPct());\n\n  return em.merge(employee);\n\n}\n\npublic void removeEmployee(Employees employee) {\n\n  employee = em.find(Employees.class, employee.getEmployeeId());\n\n  em.remove(employee);\n\n}\n\n@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)\n\npublic List<Employees> getEmployees() {\n\n  return em.createNamedQuery(\"Employees.findAll\", Employees.class).getResultList();\n\n}\n\npublic Employees getEmployee(Integer employeeId) {\n\n  if (employeeId != null) {\n\n    return em.find(Employees.class, employeeId);\n\n  }\n\n  return null;\n\n}<\/code><\/pre>\n\n\n\n

    Crie um REST Web Service Project.<\/p>\n\n\n\n

    No Step 1, clique em Next.<\/p>\n\n\n\n

    No Step 2, altere o Default Package para br.com.waslleysouza.webservice e clique em Finish.<\/p>\n\n\n\n

    Clique duas vezes no Projeto WebService, adicione o Projeto Model como Dependent Project, e clique em OK.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    Crie o Employees RESTful Service.<\/p>\n\n\n\n

    Na janela Applications, clique com o bot\u00e3o direito no Projeto Rest e selecione New > From Gallery.<\/p>\n\n\n\n

    Na caixa de di\u00e1logo New Gallery, escolha General > Java Class e clique em OK.<\/p>\n\n\n\n

    Na caixa de di\u00e1logo Create Java Class, altere o nome para EmployeesResource e clique em OK.<\/p>\n\n\n\n

    Copie o seguinte c\u00f3digo dentro de sua classe:<\/p>\n\n\n\n

    @Stateless\n\npublic class EmployeesResource {\n\n  @EJB\n\n  EmployeesServiceLocal employeesService;\n\n  public EmployeesResource() {\n\n    super();\n\n  }\n\n  public void create(Employees employee) {\n\n    employeesService.persistEmployee(employee);\n\n  }\n\n  public void update(Employees employee) {\n\n    employeesService.mergeEmployee(employee);\n\n  }\n\n  public void delete(int id) {\n\n    Employees employee = getById(id);\n\n    if (null != employee) {\n\n      employeesService.removeEmployee(employee);\n\n    }\n\n  }\n\n  public Employees getById(int id) {\n\n    return employeesService.getEmployee(id);\n\n  }\n\n  public List<Employees> findAll() {\n\n    return employeesService.getEmployees();\n\n  }\n\n}<\/code><\/pre>\n\n\n\n

    Na janela Applications, clique com o bot\u00e3o direito na classe EmployeesResource e escolha Create RESTful Service.<\/p>\n\n\n\n

    Escolha JAX-RS 2.0 Style e clique em Next.<\/p>\n\n\n\n

    Configure o RESTful Service e clique em Finish.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    Na caixa de di\u00e1logo Return Type Warning, clique em OK.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n


    <\/span>Este \u00e9 o resultado!<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n


    <\/span>Feito!<\/p>\n\n\n\n

    Para testar o RESTful Service, clique com o bot\u00e3o direito na classe EmployeesResource e escolha Test Web Service.<\/p>\n\n\n\n

    Voc\u00ea pode testar cada opera\u00e7\u00e3o de servi\u00e7o utilizando o HTTP Analyzer.<\/p>\n\n\n

    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n
    \n
    \"\"
    <\/figcaption><\/figure><\/div>\n\n\n

    <\/p>\n","protected":false},"excerpt":{"rendered":"

    Aprenda como construir um RESTful Web Service utilizando o JDeveloper 12c (12.1.3) e torne-se um desenvolvedor experiente no desenvolvimento de servi\u00e7os web.<\/p>\n","protected":false},"author":24,"featured_media":171832,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[6,23],"tags":[1435,226,276,177,1488,1618,2711],"class_list":["post-631","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artigos","category-middleware","tag-12c","tag-java","tag-jdeveloper","tag-oracle","tag-rest","tag-restful","tag-webservice"],"publishpress_future_action":{"enabled":false,"date":"2025-03-17 22:12:04","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"category"},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/posts\/631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/comments?post=631"}],"version-history":[{"count":0,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/posts\/631\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/media\/171832"}],"wp:attachment":[{"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/media?parent=631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/categories?post=631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.profissionaloracle.com.br\/wp-json\/wp\/v2\/tags?post=631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}