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á.
Criar uma pilha e executar uma aplicação
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
Esta seção mostra como usar o livro de receitas do Tomcat para implementar uma configuração de pilha básica que execute uma aplicação JSP simples chamada SimpleJSP. A pilha consiste em uma camada personalizada baseada em Tomcat chamada e TomCustom uma camada MySQL. O SimpleJSP é implantado TomCustom e exibe algumas informações do banco de dados MySQL. Se você ainda não está familiarizado com o básico de como usar o AWS OpsWorks Stacks, leia primeiro. Conceitos básicos das pilhas Linux do Chef 11
A aplicação SimpleJSP
A aplicação SimpleJSP demonstra os conceitos básicos de como configurar uma conexão de banco de dados e recuperar dados do banco de dados MySQL da pilha.
<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>
SimpleJSP usa um objeto DataSource
para se comunicar com o banco de dados MySQL. O Tomcat usa os dados no web app context configuration file para criar e inicializar um objeto DataSource
e o associar a um nome lógico. Em seguida, ele registra o nome lógico usando um serviço de nomenclatura Java Naming and Directory Interface (JNDI). Para obter uma instância do objeto DataSource
apropriado, você cria um objeto InitialContext
e passa o nome lógico do recurso para o método lookup
do objeto, que recupera o objeto apropriado. O nome lógico do exemplo SimpleJSP, java:comp/env/jdbc/mydb
, tem os seguintes componentes:
-
O namespace raiz,
java
, separado do resto do nome por dois-pontos (:). -
Eventuais namespaces adicionais, separados por barras (/).
O Tomcat adiciona automaticamente os recursos ao namespace
comp/env
. -
O nome do recurso, definido no arquivo de configuração do contexto da aplicação da web e separado dos namespaces por uma barra.
O nome do recurso deste exemplo é
jdbc/mydb
.
Para estabelecer uma conexão com o banco de dados, SimpleJSP faz o seguinte:
-
Chama o método
DataSource
do objetogetConnection
, que retorna um objetoConnection
. -
Chama o método
Connection
do objetocreateStatement
para criar um objetoStatement
, que você usa para se comunicar com o banco de dados. -
Comunica-se com o banco de dados chamando o método
Statement
apropriado.SimpleJSP chama
executeQuery
para executar uma consulta SHOW DATABASES, que lista os bancos de dados do servidor.
O método executeQuery
retorna um objeto ResultSet
, que contém os resultados da consulta. SimpleJSP obtém os nomes do banco de dados do objeto ResultSet
retornado e os concatena para criar uma string de saída. Por fim, o exemplo fecha os objetos ResultSet
, Statement
e Connection
. Para obter mais informações sobre JSP e JDBC, consulte JavaServer Pages Technology
Para usar SimpleJSP com uma pilha, você deve colocá-lo em um repositório. Você pode usar qualquer um dos repositórios compatíveis, mas para usar SimpleJSP com a pilha de exemplo abordada na seção a seguir, você deve colocá-lo em um arquivo S3 público. Para obter informações sobre como usar os outros repositórios padrão, consulte Repositórios de livro de receitas.
Para colocar SimpleJSP em um repositório de arquivo S3
-
Copie o código de exemplo para um arquivo chamado
simplejsp.jsp
e coloque o arquivo em um diretório chamadosimplejsp
. -
Crie um arquivo
.zip
do diretóriosimplejsp
. -
Crie um bucket do Amazon S3 público, faça upload de
simplejsp.zip
no bucket e torne o arquivo público.Para obter uma descrição de como realizar esta tarefa, consulte Começar a usar o Amazon Simple Storage Service.
Criar um stack
Para executar SimpleJSP você precisa de uma pilha com as camadas a seguir.
-
A camada do MySQL, que dá suporte ao servidor MySQL back-end.
-
Uma camada personalizada que usa o livro de receitas do Tomcat para dar suporte a instâncias do servidor Tomcat.
Para criar a pilha
-
No painel de AWS OpsWorks pilhas, clique em Adicionar pilha para criar uma nova pilha e clique em Avançado >> para exibir todas as opções. Configure a pilha da maneira a seguir.
-
Nome — Um nome de pilha definido pelo usuário; este exemplo usa. TomStack
-
Usar livros de receitas do Chef personalizados: defina o botão seletor como Sim para exibir opções adicionais.
-
Tipo de repositório: Git.
-
URL do repositório:
git://github.com/amazonwebservices/opsworks-example-cookbooks.git
. -
JSON do Chef personalizado: adicione o seguinte JSON:
{ "tomcat": { "base_version": 7, "java_opts": "-Djava.awt.headless=true -Xmx256m" }, "datasources": { "ROOT": "jdbc/mydb" } }
Para as opções restantes, você pode aceitar os valores padrão.
O JSON personalizado faz o seguinte:
-
Substitui o atributo
['base_version']
do livro de receitas do Tomcat para definir o Tomcat versão como 7; o valor padrão é 6. -
Substitui o atributo
['java_opts']
do livro de receitas do Tomcat para especificar que a instância é descentralizada e definir o tamanho máximo do heap do JVM como 256 MB; o valor padrão não define opções para instâncias que executem o Amazon Linux. -
Especifica o valor do atributo
['datasources]
, que atribui um nome de recurso JDBC (jdbc/mydb) ao nome de contexto da aplicação da web (ROOT), conforme abordado em tomcat::context.Este último atributo não tem valor padrão. Você deve defini-lo com JSON personalizado.
-
-
Clique em Add a layer. Em Layer type, selecione MySQL. Em seguida, clique em Add Layer.
-
No painel de navegação, clique em Instances e em Add an instance. Clique em Add Instance para aceitar os padrões. Na linha da instância, clique em start.
-
Retorne à página Layers e clique em + Layer para adicionar uma camada. Para Layer type (Tipo de camada), clique em Custom (Personalizado). O exemplo usa
TomCustom
etomcustom
como o nome da camada e o nome abreviado, respectivamente. -
Na página Layers, para a camada personalizada, clique em Recipes e, em seguida, em Edit. Em Custom Chef Recipes, atribua as receitas do livro do Tomcat aos eventos do ciclo de vida da camada, da seguinte forma:
-
Para Setup (Instalar), digite
tomcat::setup
e clique em +. -
Para Configure (Configurar), digite
tomcat::configure
e clique em +. -
Para Deploy (Implantar), digite
tomcat::deploy
e clique em +. Em seguida, clique em Save..
-
-
No painel de navegação, clique em Apps e em Add an app. Especifique as opções a seguir e clique em Add App:
-
Nome — O nome do aplicativo; o exemplo usa SimpleJSP e o nome curto gerado pelo AWS OpsWorks Stacks será simplejsp.
-
Tipo de aplicativo: defina essa opção como Outro.
AWS OpsWorks O Stacks implanta automaticamente os tipos de aplicativos padrão nas instâncias do servidor associadas. Caso você defina App type (Tipo de aplicativo) como Other (Outro), o AWS OpsWorks Stacks simplesmente executará as receitas de implantação e permitirá que elas lidem com a implantação.
-
Raiz do documento: defina essa opção como
ROOT
.O valor Document root especifica o nome do contexto.
-
Tipo de repositório: defina essa opção como Arquivamento do S3.
-
URL do repositório: defina como o URL do Amazon S3 do aplicativo que você criou anteriormente.
Use as configurações padrão para as outras opções.
-
-
Use a página Instâncias para adicionar uma instância à TomCustom camada e iniciá-la. AWS OpsWorks O Stacks executa automaticamente as receitas de implantação em uma nova instância após a conclusão das receitas de configuração. Portanto, iniciar a instância também implanta o SimpleJSP.
-
Quando a TomCustom instância estiver on-line, clique no nome da instância na página Instâncias para ver seus detalhes. Copie o endereço IP público. Em seguida, construa uma URL da seguinte forma: http://
publicIP
appname.jsp
/tc/. Para o exemplo, esse URL será semelhante ahttp://50.218.191.172/tc/simplejsp.jsp
.nota
O URL do Apache que encaminha solicitações para o Tomcat é definido como o atributo
['tomcat']['apache_tomcat_bind_path']
padrão,/tc/
. A raiz do documento SimpleJSP é definida comoROOT
, que é um valor especial resolvido como/
. Por isso, o URL é ".../tc/simplejsp.jsp". -
Cole o URL da etapa anterior no navegador. Você deve ver o seguinte:
Databases found: information_schema simplejsp test
nota
Se sua pilha tiver uma instância do MySQL AWS OpsWorks , o Stacks cria automaticamente um banco de dados para cada aplicativo, nomeado com o nome abreviado do aplicativo.