// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Executando Aplicações Web no Oracle Cloud
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Executando Aplicações Web no Oracle Cloud - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Executando Aplicações Web no Oracle Cloud

O Oracle Cloud é uma nuvem corporativa para empresas. O Oracle Cloud oferece aplicações de negócios de autosserviço entregues em um desenvolvimento integrado e plataforma de implantação com ferramentas para estender e criar rapidamente novos serviços. Para obter mais informações sobre o Oracle Cloud, consulte a link:https://cloud.oracle.com[+página inicial do Oracle Cloud+].

Este documento mostra como registrar o Oracle Cloud com o NetBeans IDE e algumas funcionalidades do Oracle Cloud suportadas no IDE. Este documento discute algumas das vantagens e desvantagens de trabalhar completamente na Nuvem em comparação ao trabalho em um servidor local para depois fazer implantações na Nuvem. No final, você criará uma aplicação Web simples, seguindo as instruções de link:quickstart-webapps.html[+Introdução a Aplicações Web+] e a executará no Oracle Cloud.

Você também pode consultar a série de tutoriais do link:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+Oracle Cloud Development with NetBeans and Eclipse (OEPE)+] no blog do Java Training Beat.


image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]


*Para seguir este tutorial, os recursos e softwares a seguir são necessários.*

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Versão 7.3, 7.4, 8.0 do Java EE 

|Plug-in do Oracle Cloud |disponível no Centro de Atualização NetBeans via Gerenciador de Plug-ins do NetBeans 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 7 ou versão 8 

|Oracle Java Cloud Service |Inscreva-se na link:http://cloudcentral.c9dev.oraclecorp.com/mycloud/f?p=SERVICE:free_trial:0[+página inicial de Disponibilidade Pública do Oracle Cloud+] 

|Oracle Java Cloud Service SDK |Faça download da link:http://cloud.oracle.com[+página inicial do Oracle Cloud+]. 

|link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Servidor Oracle WebLogic+] 
(para desenvolvimento e teste de aplicações localmente)

 |
Versão indicada no Oracle Java Cloud Service Users Guide
Este documento está disponível na guia Recursos > Documentação link:https://cloudeap.oracle.com/mycloud/f?p=service:home:0[+no serviço Java Cloud ativado+]. 

|link:http://www.oracle.com/technetwork/products/express-edition/downloads/index.html[+Servidor de banco de dados OracleXE+] 
(para desenvolvimento e teste de aplicações localmente) |11g 
|===


[[sdk-download]]
== Fazendo Download do Oracle Java Cloud Service SDK

Você precisa de uma cópia local do Oracle Java Cloud Service SDK para desenvolver aplicações Web no Oracle Cloud. Você pode fazer download do Oracle Java Cloud Service SDK na link:http://cloud.oracle.com[+página inicial do Oracle Cloud+].

*Para fazer download do Oracle Java Cloud Service SDK:*

1. Aponte uma janela do browser para a link:http://cloud.oracle.com[+página inicial do Oracle Cloud+].
2. Expanda a lista drop-down *Recursos* no menu principal e clique em *Downloads*.
3. Clique em *Fazer download do Oracle Cloud Java Service SDK* na seção Oracle Java Cloud Service SDK.
4. Na página de download do Oracle Java Cloud Service SDK, leia e aceite o Contrato de Licença do OTN para ativar o link de download.
5. Faça download e extraia o SDK no seu sistema local.


[[install-plugin]]
== Instalar o Plug-in do Oracle Cloud

Para ativar o suporte para o Oracle Java Cloud Service no IDE, você precisa instalar o plug-in do Oracle Cloud do Centro de Atualizações NetBeans. É possível usar o gerenciador de Plug-ins do NetBeans para instalar o plug-in do Oracle Cloud.

Execute as etapas a seguir para instalar o plug-in do Oracle Cloud.

1. Escolha Ferramentas > Plug-ins no menu principal para abrir o gerenciador de Plug-ins.
2. Selecione a guia Plug-ins Disponíveis no gerenciador de Plug-ins
3. Localize e marque a caixa de seleção do plug-in Oracle Cloud. Clique em Instalar.

Quando você clicar em Instalar, o IDE abrirá o Instalador do NetBeans IDE. Você deve concluir as etapas do assistente do instalador para instalar o plug-in.

Depois que você instalar o plug-in do Oracle Cloud, o assistente Adicionar Provedor de Nuvem exibirá o Oracle Cloud na lista de provedores de nuvem suportados.


== Registrando o Oracle Cloud no IDE

É necessário registrar o Oracle Cloud na janela Serviços do IDE antes de usá-lo. Observe que você precisa de uma instalação separada do Oracle Java Cloud Service SDK.

*Observação.* Para trabalhar com o Oracle Cloud no NetBeans IDE, você precisa ter uma conta no Oracle Cloud.

*Para registrar o Oracle Cloud no IDE, execute as etapas a seguir.*

1. Abra a janela Serviços no IDE (Janela > Serviços ou Ctrl-5).
2. Clique com o botão direito do mouse no nó Nuvem e selecione Adicionar Nuvem para abrir o assistente Adicionar Provedor de Nuvem

image::images/add-cloud.png[]


. No campo Escolher Nuvem, selecione Oracle Cloud e clique em Próximo para abrir o painel Oracle Cloud. 

image::images/oracle-cloud1.png[]


. Preencha todos os campos. Procure a pasta contendo o Oracle Java Cloud Service SDK JAR. Clique em Próximo.

Quando você clica em Próximo, o IDE testa a conexão com a nuvem. Uma lista de serviços de Nuvem é exibida caso a conexão seja bem-sucedida. Só o servidor Oracle Cloud Remote (Oracle WebLogic) está disponível no momento.

*Observação:* depois de registrar um provedor Oracle Cloud, você pode alterar os detalhes da Nuvem nas respectivas Propriedades. Abra a caixa de diálogo Propriedades clicando com o botão direito do mouse em Oracle Cloud e selecionando Propriedades.



. Confirme se o provedor Oracle Cloud é exibido na lista de recursos de Nuvem. Clique em Finalizar.

O Oracle Cloud agora está listado no nó Nuvem da janela Serviços. Você pode clicar com o botão direito do mouse no nó Oracle Cloud para abrir um menu de contexto que oferece comandos para atualizar a lista de serviços, abrindo uma lista de jobs e logs, removendo a instância da nuvem ou exibindo as propriedades da nuvem.

image::images/cloud-contextmenu.png[]

Quando você registrar o Oracle Cloud no IDE, uma instância do servidor Oracle Cloud Remote também será exibido no nó Servidores. (Se ele não aparecer, clique com o botão direito do mouse no nó Oracle Cloud e selecione Atualizar).

image::images/registered-cloud-and-server.png[]

Você pode expandir o nó Oracle Cloud Remoto para exibir uma lista de aplicações implantadas no servidor remoto.


== Exibindo Jobs e Logs

Todas as solicitações que o NetBeans IDE envia ao Oracle Cloud resultam em um job. Todos os jobs têm um status (enviado, em execução, falha, concluído) e podem ter um ou mais arquivos de log (log de verificação da lista de permissões, log de verificação do antivírus, log de implantação). Você pode exibir jobs recentes e seus logs com a ação Exibir Jobs e Logs.

Clique com o botão direito do mouse no nó Oracle Cloud e selecione Exibir Jobs e Logs. Na janela do editor, é exibida uma lista dos últimos 50 jobs e logs. Leva um momento para carregar. A lista de jobs não é atualizada automaticamente. Clique em Atualizar para atualizar a lista.

image::images/jobs-n-logs.png[]


== Servidor Oracle Cloud Remote

O servidor Oracle Cloud Remote é uma instância do Oracle WebLogic em execução no Oracle Cloud. Expanda o nó Oracle Cloud Remote e consulte uma lista de aplicações em execução nesse servidor. É possível clicar com o botão direito do mouse em uma aplicação para abrir o menu pop-up que contém comandos para iniciar, interromper e anular a implantação da aplicação. Você pode clicar em Exibir no menu para abrir as página inicial da aplicação em um browser.

image::images/webapp-contextmenu.png[]

Para atualizar a lista de aplicações implantadas, clique com o botão direito do mouse no nó Oracle Cloud Remote e selecione Atualizar.

image::images/server-contextmenu.png[]

 


== Desenvolvendo Aplicações em uma Máquina Local

Recomendamos o desenvolvimento da aplicação em uma máquina local e sua reimplantação na Nuvem periodicamente. Embora seja possível desenvolver uma aplicação Web inteiramente no Oracle Cloud, o desenvolvimento local é preferível pelos seguintes motivos:

* A implantação local leva segundos em um servidor em execução. A implantação na Nuvem pode levar minutos.
* A implantação incremental só fica disponível localmente.
* A depuração só fica disponível localmente.

No entanto, também há riscos no desenvolvimento local e na implantação no Oracle Cloud. As aplicações desenvolvidas localmente podem não ser executadas no servidor Oracle Cloud Remote. Por motivos de segurança, desenvolva localmente em um servidor Oracle WebLogic 11g, que tem o mesmo servidor que o Oracle Cloud Remote.

É necessário alterar manualmente o servidor da aplicação Web entre o servidor local e o servidor do Oracle Cloud. Não existe forma automática de desenvolver localmente e implantar na Nuvem periodicamente.

*Para alterar um servidor de aplicação Web entre local e o Oracle Cloud:*

1. Na janela Projetos, clique com o botão direito do mouse no nó da aplicação e selecione Propriedades.

image::images/project-contextmenu.png[]


. Nas Propriedades do Projeto, selecione a categoria Executar.

image::images/run-properties.png[]


. Na lista drop-down Servidor, selecione o servidor que você deseja (o Oracle Cloud Remote ou Oracle WebLogic local). O servidor deve estar registrado no IDE. É possível adicionar um servidor clicando com o botão direito do mouse na janela Serviços.


== Criando uma Aplicação Web

Vá para link:quickstart-webapps.html[+Introdução ao Desenvolvimento de Aplicações Web+] e conclua este tutorial. Desenvolva a aplicação Web em um servidor Oracle WebLogic local. Depois que a aplicação for concluída, altere o servidor para o Oracle Cloud Remote e execute a aplicação.

*Observação.* Você deve instalar o Oracle WebLogic Server localmente e registrar o servidor com o IDE. Consulte link:https://netbeans.org/kb/docs/javaee/weblogic-javaee-m1-screencast.html[+Vídeo de Implantação de uma Aplicação Web no Oracle WebLogicServer+] para obter mais informações.

Antes de implantar a aplicação no servidor Oracle Cloud Remote, abra a janela de Saída (Janela > Saída > Saída ou Ctrl-4). Observe a guia Implantação do Oracle Cloud Remote na janela de saída. Esta guia mostra o andamento da implantação.

image::images/output-cloud-tab.png[]


[[crud]]
== Criando uma Aplicação CRUD com JSF

O NetBeans IDE e o Oracle Cloud podem ser usados em casos em que você tem um back-end de banco de dados Oracle gerenciado por uma aplicação Web hospedada pelo servidor Oracle WebLogic. O NetBeans IDE permite criar classes de entidade para um banco de dados Oracle existente e criar páginas do JSF (JavaServer Faces) para as classes de entidade resultantes. Este cenário exige instalações no local do servidor de banco de dados OracleXE e servidor de aplicação Oracle WebLogic.

*Importante: *O servidor Oracle Cloud Remote WebLogic não suporta PA 2.0. Se seus servidores WebLogic do local estiverem ativados para JPA 2.0, desative o JPA 2.0 ou use um provedor de persistência do JPA 1.0 para aplicações CRUD.

*Observação: *Este documento fornece apenas direções rápidas para a criação de classes de entidade e páginas de JSF. Para obter um tratamento detalhado, consulte link:jsf20crud.html[+Gerando uma Aplicação JavaServer Faces 2.0 CRUD de um Banco de Dados+].

*Para criar uma Aplicação CRUD com JSF:*

1. Ative o esquema de RH de amostra no servidor do banco de dados Oracle XE e registre o esquema no NetBeans IDE. Para obter detalhes, consulte link:../ide/oracle-db.html[+Conectando um Oracle Database do NetBeans IDE+].

Use o nome de usuário e a senha de RH quando você se registrar no esquema RH com o NetBeans IDE.



. Crie uma Aplicação Web Java usando o Java EE5 e sua instalação do servidor WebLogic local. Ative o framework JSF para a aplicação.

image::images/crudapp-eevers.png[]


image::images/crudapp-jsf.png[]


. Na janela Projetos, clique com o botão direito do mouse no nó de root do projeto e selecione Novo > Classes de Entidade do Banco de Dados. As Classes de Entidade do assistente do Banco de Dados são abertas.


. Em Classes de Entidade do assistente do Banco de Dados, selecione Nova Fonte de Dados na caixa drop-down Fonte de Dados. A caixa de diálogo Criar Fonte de Dados é aberta.

image::images/crudapp-newdatasource.png[]


. Nomeie essa origem de dados para corresponder ao nome do serviço de banco de dados na sua conta Oracle Cloud registrada..

image::images/cloud-db-name.png[]


. Selecione a conexão do banco de dados do OracleXE HR criada na Etapa 1. Clique em OK. A caixa de diálogo Criar Fonte de Dados é fechada.

image::images/create-datasource.png[]


. Em Classes da Entidade do assistente de Banco de Dados, o campo Tabelas Disponíveis é preenchido com os nomes de tabela do esquema de RH. Selecione uma ou mais tabelas, como EMPLOYEES, e clique em Adicionar. Clique no restante do assistente, dando um nome arbitrário ao pacote contendo as classes da entidade e aceitando todos os valores default em outros campos.


. Na janela Projetos, clique com o botão direito do mouse no nó de root do projeto e selecione Novo > Páginas JSF das Classes de Entidade. O Assistente de Novas Páginas JSF de Classes de Entidade é aberto.


. No painel Classes de Entidade, clique em Selecionar Tudo e clique em Próximo.


. No painel Gerar Páginas e Classes JSF, dê os nomes apropriados aos pacotes e à pasta de arquivos JSF e clique em Finalizar.


. Na janela Projetos, clique com o botão direito do mouse no nó root do projeto e selecione Executar. O IDE cria o projeto e o implanta no local, no servidor WebLogic. Um browser é aberto na página inicial do projeto.

Agora, você tem uma versão local de uma aplicação Web Java usando CRUD e JSF. É possível testar e ajustar a aplicação localmente. Quando a aplicação estiver em estado final, implante-a no Oracle Cloud.

*Implantando a Aplicação CRUD/JSF no Oracle Cloud*

1. Na janela Projetos, clique com o botão direito do mouse no nó root do projeto e selecione Propriedades.
2. Selecione a categoria Executar na janela Propriedades. Nessa categoria, expanda a lista drop-down Servidor e selecione Oracle Cloud Remote. Clique em OK.

image::images/crudapp-properties.png[]


. Na janela Projetos, expanda o nó Arquivos de Configuração do projeto e clique duas vezes em ` persistence.xml`. O arquivo é aberto na view Design do Editor XML.


. Em Estratégia de Geração de Tabela, selecione Criar 

image::images/crudapp-persistence.png[]


. Se seu servidor WebLogic local tiver o JPA 2.0 ativado, você deverá alterar o provedor de persistência do EclipseLink default, que usa JPA 2.0, para um provedor JPA 1.0, como OpenJPA.

*Observação: *Se o seu servidor WebLogic local não estiver ativado para JPA 2.0, o EclipseLink fará o fallback para o JPA 1.0. Nesse caso, não é necessário para alterar provedores de persistência.



. Na janela Projetos, clique com o botão direito do mouse no nó root do projeto e selecione Executar. O IDE compila o projeto e o implanta no servidor Oracle Cloud Remote. Você pode seguir o andamento da implantação na janela de Saída do IDE, na guia Implantação do Oracle Cloud Remote.

*Cuidado: *O Oracle Cloud ainda não suporta o upload de tabelas no banco de dados. Portanto, nenhum dado está disponível para sua aplicação quando ela estiver no Oracle Cloud.


== Testando Suporte à Lista de Permissão

O Oracle Cloud não suporta métodos de API de Java padrão, como  ``System.exit()`` . A _lista de permissão_ do Oracle Cloud define todos os métodos permitidos. Durante a implantação de uma aplicação no Oracle Cloud, o servidor Cloud testa a conformidade da lista de permissão. Se a lista de permissões for violada, o servidor Nuvem recusará a implantação da aplicação.

O NetBeans IDE ajuda a impedir erros relacionados a listas de permissão, notificando as violações de lista de permissões durante a codificação. O recurso autocompletar código é limitado pela lista de permissão, e as violações de lista de permissão são realçadas no código. Execute a ação Verificar em uma aplicação Web implantada no servidor Oracle Cloud Remote e a janela de Saída mostrará as violações de lista de permissão.

*Para testar a lista de permissão:*

1. Na janela Projetos, clique com o botão direito do mouse na<<create-webapp,aplicação web criada>> e selecione Novo > Servlet. O assistente Novo Servlet será aberto.

image::images/new-servlet.png[]


. Dê um nome arbitrário ao servlet, selecione um pacote existente para ele e clique em Concluir. A classe do servlet será aberta no editor.


. Localize o método  ``processRequest`` , digite  ``System.ex``  no corpo do método e pressione Ctrl+Space para abrir o recurso autocompletar código. O recurso autocompletar código não oferece a possibilidade de completar o  ``System.exit``  , pois o  ``System.exit``  não está permitido na lista de permissões do Oracle Cloud. O IDE mostra  ``exit``  com uma linha.

image::images/cc-failure.png[]


. Finalize digitando  ``System.exit(1);`` . Uma advertência será exibida. Role o cursor pelo ícone de advertência e uma dica de ferramenta será exibida, informando que o  ``java.lang.System.exit``  não é permitido

image::images/whitelist-warning.png[]


. Na janela Projetos, clique com o botão direito do mouse no nó da aplicação e selecione Verificar. Abra a janela de Saída (Janela > Saída > Saída ou Ctrl-4). A janela de Saída inclui uma guia Lista de Permissões que mostra erros devido a restrições da lista de restrições.

image::images/whitelist-output.png[]


. Abra a janela Itens de Ação (Janela > Itens de Ação ou Ctrl-6). As violações de lista de permissão aparecem como um grupo separado de itens de ação.

*Dica:* Ative os Itens de Ação de Grupo por Categoria (botão inferior à esquerda) para ver as violações de lista de permissão mais facilmente.

image::images/whitelist-tasks.png[]


. Tente implantar o projeto. Uma caixa de diálogo de advertência é exibida, informando que foram detectadas violações da lista de permissões e perguntando se você quer continuar com a implantação. Clique em Não. A caixa de diálogo desaparecerá.


. 
Na janela Projetos, clique com o botão direito do mouse no nó da aplicação e selecione Propriedades. As Propriedades do Projeto da aplicação serão abertas. Selecione a categoria das Listas de Permissão. Uma lista ativa de listas de permissão é exibida. Nessa caixa de diálogo, é possível desativar a lista de permissões.

Quando um servidor da aplicação da Web é definido como Oracle Cloud Remote, a lista de permissões do Oracle Cloud se aplica ao projeto e a qualquer subprojeto desse projeto. Por exemplo, uma aplicação Corporativa definida para execução no Oracle Cloud Remote tem a lista de permissões do Oracle Cloud aplicada à aplicação Corporativa e a quaisquer módulos EJB ou aplicações Web que sejam parte da aplicação Corporativa. Tanto o projeto quanto seus subprojetos têm uma categoria Lista de Permissão em suas Propriedades do Projeto. É possível usar a caixa de diálogo Propriedades do Projeto pra definir listas de permissões para o projeto e seus subprojetos específicos.

image::images/whitelist-properties.png[]

link:/about/contact_form.html?to=3&subject=Feedback:%20Running%20Web%20Apps%20on%20Oracle%20Cloud[+Envie-nos Seu Feedback+]

 



== Consulte Também

Para obter informações sobre os serviços do Oracle Cloud, consulte os recursos a seguir:

* link:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+Oracle Cloud Development with NetBeans and Eclipse (OEPE)+] (blog do Java Training Beat)
* link:https://cloud.oracle.com/mycloud/f?p=service:home:0[+Página Inicial do Oracle Cloud+]

Para obter informações relacionadas sobre o desenvolvimento de aplicações Web no NetBeans IDE, consulte os seguintes recursos:

* link:../../trails/java-ee.html[+Trilha de Aprendizado do Java EE e Java Web+]
