Implantar aplicativos Java - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implantar aplicativos Java

Importante

O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no AWS re:POST ou por meio do Premium AWS Support.

Os tópicos a seguir descrevem como implantar aplicativos em instâncias de camada Java App Server. Os exemplos são para aplicativos JSP, mas você pode usar o mesmo procedimento para instalar outros tipos de aplicativo Java.

Você pode implantar páginas JSP de qualquer um dos repositórios suportados. Se você quiser implantar arquivos WAR, observe que o AWS OpsWorks Stacks extrai automaticamente arquivos WAR que são implantados de um arquivo Amazon S3 ou HTTP, mas não de um repositório Git ou Subversion. Se você quer usar Git ou Subversion para arquivos WAR, pode executar uma das seguintes ações:

  • Armazenar o arquivo extraído no repositório.

  • Armazenar o arquivo WAR no repositório e usar um hook de implantação do Chef para extrair o arquivo, conforme descrito no exemplo a seguir.

Você pode usar ganchos de implantação do Chef para executar aplicativos Ruby fornecidos pelo usuário em uma instância em qualquer um dos quatro estágios de implantação. O nome do aplicativo determina o estágio. Veja a seguir um exemplo de um aplicativo Ruby chamado before_migrate.rb, que extrai um arquivo WAR implantado a partir de um repositório Git ou Subversion. O nome associa o aplicativo com o hook de implantação do Checkout para que ele seja executado no início da operação de implantação, após a verificação do código, mas antes da migração. Para obter mais informações sobre como usar esse exemplo, consulte Uso de hooks de implantação do Chef.

::Dir.glob(::File.join(release_path, '*.war')) do |archive_file| execute "unzip_#{archive_file}" do command "unzip #{archive_file}" cwd release_path end end
nota

Quando você implanta uma atualização em um aplicativo JSP, o Tomcat pode não reconhecer a atualização e, em vez disso, continuar a executar a versão do aplicativo existente. Isso pode acontecer, por exemplo, se você implantar seu aplicativo como um arquivo.zip que contém apenas uma página JSP. Para garantir que o Tomcat execute a última versão implementada, o diretório raiz do projeto deve incluir um diretório WEB-INF que contenha um arquivo web.xml. Um arquivo web.xml pode conter uma variedade de conteúdos, mas o conteúdo a seguir é suficiente para garantir que o Tomcat reconheça as atualizações e execute a última versão implementada do aplicativo. Você não precisa alterar a versão para cada atualização. O Tomcat reconhecerá a atualização mesmo se a versão não tiver sido alterada.

<context-param> <param-name>appVersion</param-name> <param-value>0.1</param-value> </context-param>

implantar um aplicativo JSP

Para implantar um aplicativo JSP, especifique o nome e as informações do repositório. Você também pode especificar, opcionalmente, os domínios e as configurações de SSL. Para obter mais informações sobre como criar um aplicativo, consulte Adição de aplicativos. O procedimento a seguir mostra como criar e implantar uma simples página JSP a partir de um arquivo do Amazon S3 público. Para obter informações sobre como usar outros tipos de repositório, incluindo arquivos do Amazon S3 privados, consulte Origem do aplicativo.

O exemplo a seguir mostra a página JSP, que exibe algumas informações do sistema.

<%@ page import="java.net.InetAddress" %> <html> <body> <% java.util.Date date = new java.util.Date(); InetAddress inetAddress = InetAddress.getLocalHost(); %> The time is <% out.println( date ); out.println("<br>Your server's hostname is "+inetAddress.getHostName()); %> <br> </body> </html>
nota

O procedimento a seguir pressupõe que você já está familiarizado com os conceitos básicos de criação de pilhas, a adição de instâncias em layers e assim por diante. Se você é novo no AWS OpsWorks Stacks, você deve ver Conceitos básicos das pilhas Linux do Chef 11 primeiro.

Para implantar uma página JSP a partir de um arquivo do Amazon S3
  1. Crie uma pilha com uma camada Java App Server, adicione uma instância 24/7 à camada e inicie-a.

  2. Copie o código em um arquivo chamado simplejsp.jsp, coloque o arquivo em uma pasta chamada simplejsp e crie um arquivo .zip da pasta. Os nomes são arbitrários; você pode usar os nomes que quiser nos arquivos ou pastas. Você também pode usar outros tipos de arquivo, incluindo arquivo gzip, bzip2, tarball ou Java WAR. Observe que o AWS OpsWorks Stacks não suporta arquivos tar não compactados. Para implantar múltiplas páginas JSP, inclua-as no mesmo arquivo.

  3. Carregue o arquivo para um bucket do Amazon S3 e torne o arquivo público. Copie o URL do arquivo para uso posterior. Para obter mais informações sobre como criar buckets e fazer upload de arquivos, consulte Comece a usar o Amazon Simple Storage Service.

  4. Adicione um aplicativo na pilha e especifique as seguintes configurações:

    • Nome: SimpleJSP

    • App typeJava

    • Tipo de repositórioHttp Archive

    • URL do repositório: o URL do Amazon S3 do arquivo compactado.

    Use os valores padrão para as configurações restantes e clique em Add App para criar o aplicativo.

  5. Implante o aplicativo na instância Java App Server.

Agora você pode acessar o URL do aplicativo e visualizá-lo. Se você não tiver especificado um domínio, pode construir um URL usando o endereço IP público da instância ou o nome DNS público. Para obter o endereço IP público ou o nome DNS público de uma instância, acesse o console AWS OpsWorks Stacks e clique no nome da instância na página Instâncias para abrir a página de detalhes.

O restante do URL depende do nome curto do aplicativo, que é um nome minúsculo que o AWS OpsWorks Stacks gera a partir do nome do aplicativo que você especificou ao criar o aplicativo. Por exemplo, o nome curto do SimpleJSP é simplejsp. Você pode obter um nome curto de aplicativo de na página de detalhes.

  • Se o nome curto é root, você pode usar http://public_DNS/appname.jsp ou http://public_IP/appname.jsp.

  • Caso contrário, você pode usar http://public_DNS/app_shortname/appname.jsp ou http://public_IP/app_shortname/appname.jsp.

Se você especificou um domínio para o aplicativo, o URL é http://domain/appname.jsp.

O URL para o exemplo seria algo similar a http://192.0.2.0/simplejsp/simplejsp.jsp.

Se você quer implantar vários aplicativos para a mesma instância, não deve usar root como nome curto. Isso pode causar conflitos de URL que impedem o bom funcionamento do aplicativo. Em vez disso, atribua um nome de domínio diferente para cada aplicativo.

A implantação de um JSP App com um banco de dados de back-end

As páginas JSP podem usar um objeto JDBC DataSource para se conectar a um banco de dados de back-end. Você pode criar e implantar um aplicativo usando o procedimento da seção anterior, com uma etapa adicional para configurar a conexão.

A página JSP seguinte mostra como se conectar a um objeto DataSource.

<html> <head> <title>DB Access</title> </head> <body> <%@ page language="java" import="java.sql.*,javax.naming.*,javax.sql.*" %> <% StringBuffer output = new StringBuffer(); DataSource ds = null; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mydb"); con = ds.getConnection(); output.append("Databases found:<br>"); stmt = con.createStatement(); rs = stmt.executeQuery("show databases"); while (rs.next()) { output.append(rs.getString(1)); output.append("<br>"); } } catch (Exception e) { output.append("Exception: "); output.append(e.getMessage()); output.append("<br>"); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } catch (Exception e) { output.append("Exception (during close of connection): "); output.append(e.getMessage()); output.append("<br>"); } } %> <%= output.toString() %> </body> </html>

AWS OpsWorks O Stacks cria e inicializa o DataSource objeto, o vincula a um nome lógico e registra o nome em um serviço de nomenclatura Java Naming and Directory Interface (JNDI). O nome lógico completo é java:comp/env/user-assigned-name. Você deve especificar a parte do nome atribuída ao usuário adicionando os atributos de JSON personalizado aos atributos de configuração e implantação da pilha para definir o atributo ['opsworks_java']['datasources'], conforme descrito a seguir.

Para implantar uma página JSP que se conecta a um banco de dados MySQL
  1. Crie uma pilha com uma camada Java App Server, adicione uma instância ininterrupta em cada camada e inicie-a.

  2. Adicione uma layer de banco de dados na pilha. Os detalhes dependem de qual banco de dados você usa.

    Para usar uma instância do MySQL para o exemplo, adicione uma camada MySQL à pilha, adicione uma instância 24/7 na camada e inicie-a.

    Para usar uma instância Amazon RDS (MySQL) para o exemplo:

    • Especifique um mecanismo de banco de dados MySQL para a instância.

    • Atribua os grupos de segurança AWS- OpsWorks -DB-Master-Server (security_group_id) e AWS- -Java-App-Server (security_group_id) à instância. OpsWorks AWS OpsWorks O Stacks cria esses grupos de segurança para você quando você cria sua primeira pilha na região.

    • Crie um banco de dados chamado simplejspdb.

    • Verifique se nome de usuário e a senha principais não contêm & ou outros caracteres que possam causar um erro no Tomcat.

      Especificamente durante o startup, o Tomcat deve analisar o arquivo de contexto do aplicativo da Web, um arquivo XML que inclui o nome de usuário e a senha principais. Se a string incluir um caractere &, o analisador XML o tratará como uma entidade XML malformada e lançará uma exceção de análise, que impedirá a inicialização do Tomcat. Para obter mais informações sobre o arquivo de contexto do aplicativo da Web, consulte tomcat::context.

    • Adicione um driver MySQL na camada Java App Server.

    • Registre a instância RDS com sua pilha.

    Para obter mais informações sobre como usar instâncias do Amazon RDS com AWS OpsWorks Stacks, consulte. Camada de serviços do Amazon RDS

  3. Copie o código de exemplo em um arquivo chamado simplejspdb.jsp, coloque o arquivo em uma pasta chamada simplejspdb e crie um arquivo .zip da pasta. Os nomes são arbitrários; você pode usar os nomes que quiser nos arquivos ou pastas. Você também pode usar outros tipos de arquivo, incluindo gzip, bzip2 ou tarball. Para implantar múltiplas páginas JSP, inclua-as no mesmo arquivo. Para obter mais informações sobre como implantar aplicativos de outros tipos de repositório, consulte Origem do aplicativo.

  4. Carregue o arquivo para um bucket do Amazon S3 e torne o arquivo público. Copie o URL do arquivo para uso posterior. Para obter mais informações sobre como criar buckets e fazer upload de arquivos, consulte Comece a usar o Amazon Simple Storage Service.

  5. Adicione um aplicativo na pilha e especifique as seguintes configurações:

    • Nome: SimpleJSPDB

    • App typeJava

    • Tipo de fonte de dadosOpsWorks(para uma instância do MySQL) ou RDS (para uma instância do Amazon RDS).

    • Instância do banco de dados: a instância de MySQL que você criou anteriormente, geralmente nomeada como db-master1(mysql), ou a instância do Amazon RDS, que estará nomeada como DB_instance_name (mysql).

    • Database namesimplejspdb.

    • Tipo de repositórioHttp Archive

    • URL do repositório: o URL do Amazon S3 do arquivo compactado.

    Use os valores padrão para as configurações restantes e clique em Add App para criar o aplicativo.

  6. Adicione os seguintes atributos de JSON personalizado aos atributos da configuração da pilha, em que simplejspdb é o nome curto do aplicativo.

    { "opsworks_java": { "datasources": { "simplejspdb": "jdbc/mydb" } } }

    AWS OpsWorks O Stacks usa esse mapeamento para gerar um arquivo de contexto com as informações necessárias do banco de dados.

    Para obter mais informações sobre como adicionar atributos de JSON personalizado aos atributos de configuração da pilha, consulte Usar JSON personalizado.

  7. Implante o aplicativo na instância Java App Server.

Agora você pode usar o URL do aplicativo para visualizá-lo. Para obter uma descrição de como construir o URL, consulte implantar um aplicativo JSP.

O URL para o exemplo seria algo similar a http://192.0.2.0/simplejspdb/simplejspdb.jsp.

nota

O atributo datasources pode conter vários atributos. Cada atributo é nomeado com um nome curto de aplicativo e definido para a parte apropriada do nome atribuída ao usuário de um nome lógico. Se você tiver vários aplicativos, pode usar nomes lógicos individuais, o que exige um JSON personalizado parecido com o seguinte.

{ "opsworks_java": { "datasources": { "myjavaapp": "jdbc/myappdb", "simplejsp": "jdbc/myjspdb", ... } } }