Como a maioria de meus artigos, venho compartilhar a experiência adquirida na tentativa de executar determinada tarefa quando não encontro um artigo que mostre os passos de forma simples para a execução. Neste mostrarei como montar um ambiente que hospede um site em Java no Debian.
Antes de começar as instalações, gostaria de informar que as mesmas serão feitas em modo shell, utilizando o apt-get, mas o leitor poderá optar por utilizar a ferramenta gráfica (front end) synaptic.
Obs.: Se o apt-get não encontrar os pacotes que instalaremos, adicione os seguintes repositórios em seu arquivo /etc/apt/source.list:
deb http://ftp.debian.org/debian/ etch main contrib non-free
deb http://ftp.br.debian.org/debian etch main contrib non-free.
Antes de mais nada será necessário instalar os pacotes Java, para isso basta usar a seguinte linha de comando:
# apt-get install sun-java5-jdk
Agora instalaremos o Tomcat. Outra tarefa muito fácil, basta como root digitar o seguinte comando:
# apt-get install tomcat5.5
O padrão do Tomcat é responder a requisições solicitadas na porta 8180, logo a URL utilizada para acessar as páginas em seu servidor será:
http://localhost:8180
Você poderá alterar esta porta alterando-a na linha:
<Connector port="8180" maxHttpHeaderSize="8192"
do arquivo /usr/share/tomcat5.5/conf/server.xml, porém aqui nós trabalharemos com esta porta padrão.
Feito isso, nosso contêiner terá sido instalado, porém não aparecerá nenhuma página, pois nada foi criado. Podemos então instalar a página de administração do Tomcat e as páginas de exemplos, para isso execute, como root:
[1] Comentário enviado por michel5670 em 30/06/2009 - 21:33h
Colega muito bom seu artigo veio em boa hora pois eu estava com dificuldades de instalar e configurar o debian,seu artigo está muito bem explicado e com um assunto de interesse de uma grande maioria prova disso e o artigo acabar de ser postado e ja ter mais de 150 acessos Parabéns!!!
[2] Comentário enviado por maran em 01/07/2009 - 08:51h
Caracas Geraldo,
eu ainda não tinha visto um artigo do genero, sobre Tomcat integrado ao MySQL, muito bom!
Bem explicado, e de grande valia a muito, isso ae, show de bola,
Abraços
[4] Comentário enviado por gjr_rj em 01/07/2009 - 09:42h
Pedi para incluirem o restante do arquivo, mas enquanto isso não acontece, estou colocando aqui. Seria incluido no link 5 "Conectando ao Mysql", no final.
-----------------------------------------------
Salve o arquivo e em seu browser, acesse a url hocalhost:8180/teste
Mas como o drive é encontrado em nossa aplicação e não é encontrado em nossa página ? O motivo é que nossa aplicação procura pelo CLASSPATH já as páginas tem é limitada a buscar no diretório padrão ou no diretório de nosso projeto.
Então, basta copiar o arquivo com o drive para o diretório <CATALINA_HOME>/common/lib, porém aqui iremos apenas criar um link simbólico para o arquivo.
# cd /usr/share/tomcat5.5/common/lib
# ln -s ../../../java/mysql-connector-java-5.0.4.jar mysql-connector-java.jar
Reinicie o tomcat
# /etc/init.d/tomcat5.5 restart
Tente novamente acessar a URL localhost:8180/teste
Desta vez o resultado será:
Olá mundo !!!
1 + 1 = 2
Drive encontrado!!!
Vamos continuar nosso exemplo de teste, aumentando o código.
Edite novamente o arquivo /var/www/teste/index.jsp
Agora, vamos modificá-lo deixando com o seguinte código:
<%
String url = "jdbc:mysql://localhost:3306/dbTeste"; //string de conexão a base dbTeste
String user = "root"; //usuário da base de dados
String pwd = "123456";//senha do usuário criado
try
{
Class.forName("com.mysql.jdbc.Driver");
out.println("<br>Drive carregado com sucesso!!!<br>");
try
{
Connection cn = DriverManager.getConnection(url, user, pwd);
out.println("<br>Conexao estabelecida!!!<br>");
String sql = "select * from tbTeste";
Statement stm = cn.createStatement();
try
{
ResultSet rs = stm.executeQuery(sql);
while (rs.next())
{
out.println( " - " + rs.getString("codteste"));
}
}
catch (Exception ex)
{
out.println("<br>Erro no Select!!!<br>" + ex.printStackTrace());
}
}
catch (Exception ex)
{
out.println("<br>Erro na conexao!!!<br>" + ex.printStackTrace());
}
}
catch (ClassNotFoundException ex)
{
out.println("<br>Erro na conexao com a base de dados!!!<br>" + ex.printStackTrace());
}
catch (Exception ex)
{
out.println("<br>Drive nao pode ser carregado!!!<br>" + ex.printStackTrace());
}
out.println("<br>Olá Base!!!<br>");
}
%>
Ao acessarmos a URL localhost:8081/teste nos depararemos com a seguinte mensagem:
Olá mundo !!!
1 + 1 = ${1+1}
Erro na conexão
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.security.AccessControlException MESSAGE: access denied (java.net.SocketPermission localhost resolve) STACKTRACE: java.security.AccessControlException: access denied (java.net.SocketPermission localhost resolve) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) at java.security.AccessController.checkPermission(AccessController.java:427) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031) at java.net.InetAddress.getAllByName0(InetAddress.java:1134) at java.net.InetAddress.getAllByName(InetAddress.java:1072) at java.net.InetAddress.getAllByName(InetAddress.java:1008) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:138) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:277) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2668) at com.mysql.jdbc.Connection.(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:171) at org.apache.jsp.index_jsp._jspService(index_jsp.java:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245) at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:177) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) ** END NESTED EXCEPTION ** Last packet sent to the server was 52 ms ago.
Felizmente, se tudo correu bem até aqui, esse será nosso último erro.
Teremos que liberar a permissão de conexão.
As permissões estão definidas no arquivo "$CATALINA_BASE/conf/catalina.policy", neste caso em /usr/share/tomcat5.5/conf/catalina.policy.
Seria só alterar esse arquivo, mas se verificarmos nosso daemon (/etc/init.d/tomcat5.5), veremos que este arquivo e montado na inicialização do tomcat, pois encontraremos a seguinte linha:
Ou seja, não adianta modificar o arquivo /usr/share/tomcat5.5/conf/catalina.policy, pois quando iniciarmos o tomcat esse arquivo será refeito. Na inicialização, o conteúdo do arquivo "$CATALINA_BASE/conf/catalina.policy" é substituindo pelo conteúdo de todos os arquivos ".policy" do diretório /etc/tomcat5.5/policy.d/. Então, a linha abaixo nós poderemos incluir dentro de um arquivo ".policy" do diretório /etc/tomcat5.5/policy.d/ ou, o que acho mais organizado, criar um arquivo.
Crie um arquivo /etc/tomcat5.5/policy.d/05teste.policy. Inclua o seguinte conteúdo:
grant codeBase "file:/var/www/teste/-" {
permission java.security.AllPermission;
};
Com esse conteúdo, você faria todas as liberações para sua aplicação. O mais seguro é ir liberando as permissões a medida que forem aparecendo as necessidades, então, sugiro substituir o conteúdo do arquivo por
grant codeBase "file:/var/www/teste/-" {
permission java.net.SocketPermission "localhost:3306", "connect,resolve";
};
Assim, liberaremos apenas a conexão com o mysql.
Agora, basta reiniciarmos o tomcat
# /etc/init.d/tomcat5.5 restart
e testarmos nossa aplicação acessando a URL localhost:8180/teste
[7] Comentário enviado por rbertelle em 30/09/2009 - 17:53h
Caro gjr_rj segui criteriosamente seu tutorial, achei um pequeno erro na hora de compilar o arquivo teste2.java, mas consegui contorna-lo.
Já no final revisei e tentei de tudo, mas só obtive a resposta abaixo no browser.
Alguma segestão?
Abraço
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 30 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
27: }
28: catch (Exception ex)
29: {
30: out.println("<br>Erro no Select!!!<br>" + ex.printStackTrace());
31: }
32: }
33: catch (Exception ex)
An error occurred at line: 35 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
32: }
33: catch (Exception ex)
34: {
35: out.println("<br>Erro na conexao!!!<br>" + ex.printStackTrace());
36: }
37: }
38: catch (ClassNotFoundException ex)
An error occurred at line: 40 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
37: }
38: catch (ClassNotFoundException ex)
39: {
40: out.println("<br>Erro na conexao com a base de dados!!!<br>" + ex.printStackTrace());
41: }
42: catch (Exception ex)
43: {
An error occurred at line: 44 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
41: }
42: catch (Exception ex)
43: {
44: out.println("<br>Driver nao pode ser carregado!!!<br>" + ex.printStackTrace());
45: }
46: out.println("<br>Olá Base!!!<br>");
47: }
An error occurred at line: 47 in the jsp file: /index.jsp
Syntax error, insert "Finally" to complete TryStatement
44: out.println("<br>Driver nao pode ser carregado!!!<br>" + ex.printStackTrace());
45: }
46: out.println("<br>Olá Base!!!<br>");
47: }
48:
49: %>
An error occurred at line: 95 in the generated java file
Syntax error on token "catch", Identifier expected
An error occurred at line: 97 in the generated java file
out cannot be resolved
An error occurred at line: 97 in the generated java file
_jspx_out cannot be resolved
An error occurred at line: 98 in the generated java file
out cannot be resolved
An error occurred at line: 98 in the generated java file
out cannot be resolved
An error occurred at line: 99 in the generated java file
out cannot be resolved
An error occurred at line: 100 in the generated java file
_jspx_page_context cannot be resolved
An error occurred at line: 100 in the generated java file
_jspx_page_context cannot be resolved
An error occurred at line: 102 in the generated java file
Syntax error on token "finally", { expected
An error occurred at line: 103 in the generated java file
_jspxFactory cannot be resolved
An error occurred at line: 103 in the generated java file
_jspxFactory cannot be resolved
An error occurred at line: 103 in the generated java file
_jspx_page_context cannot be resolved
[9] Comentário enviado por felimpe em 15/09/2010 - 09:52h
foi um excelente artigo porem o final decepcionou.
deu o mesmo erro que o kra q falou acima..
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 30 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
27: }
28: catch (Exception ex)
29: {
30: out.println("<br>Erro no Select!!!<br>" + ex.printStackTrace());
31: }
32: }
33: catch (Exception ex)
An error occurred at line: 35 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
32: }
33: catch (Exception ex)
34: {
35: out.println("<br>Erro na conexao!!!<br>" + ex.printStackTrace());
36: }
37: }
38: catch (ClassNotFoundException ex)
An error occurred at line: 40 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
37: }
38: catch (ClassNotFoundException ex)
39: {
40: out.println("<br>Erro na conexao com a base de dados!!!<br>" + ex.printStackTrace());
41: }
42: catch (Exception ex)
43: {
An error occurred at line: 44 in the jsp file: /index.jsp
The operator + is undefined for the argument type(s) String, void
41: }
42: catch (Exception ex)
43: {
44: out.println("<br>Drive nao pode ser carregado!!!<br>" + ex.printStackTrace());
45: }
46: out.println("<br>Olá Base!!!<br>");
47: }
An error occurred at line: 47 in the jsp file: /index.jsp
Syntax error, insert "Finally" to complete TryStatement
44: out.println("<br>Drive nao pode ser carregado!!!<br>" + ex.printStackTrace());
45: }
46: out.println("<br>Olá Base!!!<br>");
47: }
48:
49: %>
An error occurred at line: 104 in the generated java file
Syntax error on token "catch", Identifier expected
An error occurred at line: 106 in the generated java file
out cannot be resolved
An error occurred at line: 106 in the generated java file
_jspx_out cannot be resolved
An error occurred at line: 107 in the generated java file
out cannot be resolved
An error occurred at line: 107 in the generated java file
out cannot be resolved
An error occurred at line: 108 in the generated java file
out cannot be resolved
An error occurred at line: 109 in the generated java file
_jspx_page_context cannot be resolved
An error occurred at line: 109 in the generated java file
_jspx_page_context cannot be resolved
An error occurred at line: 111 in the generated java file
Syntax error on token "finally", { expected
An error occurred at line: 112 in the generated java file
_jspx_page_context cannot be resolved