quinta-feira, 2 de julho de 2009

Montando um ambiente utilizando Tomcat+Java+mysql (Debian)


Contador de acessoVisitas

Ferramentas necessárias

Considerações iniciais


O objetivo desse artigo não é ensinar a programação java, nem explicar o funcionamento do tomcat. Será considerado que o leitor já tem estas informações. Aqui iremos apenas mostrar o caminho para a instalação e configuração do servidor tomcat, apesar de utilizar de alguns códigos em java para testar o funcionamento de nosso servidor.

Ferramentas

Para começarmos a montagem de nosso ambiente, considerarei que algumas ferramentas já estão instaladas. Não irei entrar em detalhes sobre estas instalações, mas darei uma dica para instalá-las via apt-get.

Serão necessários:

mysql - servidor de base de dados
# apt-get install mysql-server-5.0

bind - servidor DNS
# apt-get install bind9

O servidor de nomes serivrá para utilizarmos o domínio de nosso servidor no lugar do localhost, apesar de este artigo utilizarmos sempre a URL http://localhost.

lynx - navegador de páginas em modo texto
# apt-get install lynx

Iremos mostrar neste artigo a instalação do

Java - jsdk
Tomcat - conatiner para aplicações java para web
drive do java para mysql.


Instalação das ferramentas

Antes de começar as instalações, gostaria de informar que as instalações 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 a apt-get não encontrar os pacotes que iremos instalar, 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, iremos instalar 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 iremos trabalhar com esta porta padrão.

Feito isso, nosso container 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 excute, como root:

# apt-get install tomcat5.5-admin tomcat5.5-webapps

Agora, faça o teste

# lynx localhost:8180


Configurando o Tomcat

Primeiro, vamos verificar qual diretório Home do tomcat, para isso, basta entrar no arquivo /etc/init.d/tomcat5.5 e ver as variáveis de instalação.

# more /etc/init.d/tomcat5.5

aparecerá algo como:


PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=tomcat5.5
DESC="Tomcat servlet engine"
CATALINA_HOME=/usr/share/$NAME
DAEMON=$CATALINA_HOME/bin/catalina.sh
DEFAULT=/etc/default/$NAME


ou seja, neste caso a pasta Home é /usr/share/tomcat5.5.


Vamos alterar o usuário e a senha do administrador.
Edite o arquivo /usr/share/tomcat5.5/conf/tomcat-users.xml e subistituir seu conteúdo por.


<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="admin,manager"/>
</tomcat-users>


salve o arquivo e reinicie o tomcat com o comando

# /etc/init.d/tomcat5.5 restart

Feito isso, podemos acessar a página de configuração do tomcat



# lynx localhost:8180

ir no link Status, digitar o usuário admin e senha 123456.

vá no link List Applications para ver as aplicações que estão em execução.


Criando nossa aplicação para teste

Nossa primeira aplicação de teste será um arquivo jsp.

Caso não exista, cria o diretório /var/www/teste. Importante é verificar a permissão para que o tomcat tenha acesso. Eu sugiro a permissão 755.

dentro de /var/www crie o arquivo teste.xml com o seguinte conteúdo


<Context path="/teste" docBase="/var/www/teste"
   debug="0" privileged="true" allowLinking="true">
</Context>


Esse arquivo informa que quando for acrescentado /teste no final da URL ele deverá redirecionar para o diretório /var/www/teste.

Existe um arquivo com <Context path="/" docBase=... informando para qual diretório o tomcat deverá apontar quando não for digitado nada depois da URL.

Ainda dentro diretório /var/www/teste, crie o arquivo index.jsp e coloque o conteúdo


Olá mundo !!!<br>
1 + 1 = ${1+1}


salve.
Essa será a nossa página.

Agora entre no diretório /usr/share/tomcat5.5/conf/Catalina/localhost/ e crie um link simbólico com o nome de teste.xml para /var/www/teste/teste.xml

# cd /usr/share/tomcat5.5/conf/Catalina/localhost/
# ln -s /var/www/teste.xml teste.xml


O tomcat irá ler todos os xml's que estão dentro desta pasta para configurar os acessos as páginas. Nós poderíamos ter criado o arquivo teste.xml direto neste local, mas por questão de organização preferi criá-lo em outro local e fazer um link.

Reinicie o tomcat e faça o teste acessando a URL localhost:8180/teste

deverá aparecer o seguinte conteúdo

Olá mundo !!!
1 + 1 = 2

Nosso segundo exemplo será a criação de servelet.

Para isso, criaremos dentro de nosso diretório /var/www/teste o diretório WEB-INF e dentro do diretório WEB-INF crie o diretório classes.

# cd /var/www/teste
# mkdir WEB-INF
# mkdir WEB-INF/classes


Dentro do diretório classes criaremos nosso código java. Chamarei de Teste2.java e conterá o seguinte conteúdo.


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Teste2 extends HttpServlet
{
   public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
   {
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<body>");
      out.println("<head>");
      out.println("<title>Ola mundo !</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h1>Ola Mundo!</h1>");
      out.println("</body>");
      out.println("</html>");
   }
}


Grave o arquivo.

Para gerar o arquivo class, precisaríamos do servlet.jar, porém no java 5 o arquivo correto é servlet-api.jar. Procure por esse arquivo em seu micro utilizando o comando find.

# find / -name servlet-api.jar

No nosso caso o arquivo foi encontrado no diretório /usr/share/java/servlet-api.jar, então, poderemos compilar nossa servlet com o seguinte comando:

# javac -classpath /usr/share/java/servlet-api.jar Teste.java

Agora nossa classe está pronta.

Vamos fazer com que possamos acessá-la pela url.

crie o arquivo WEB-INF/web.xml com o seguinte conteúdo:


<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

   <display-name>Teste !</display-name>
   <description>
      Tetste Ola Mundo !!
   </description>

   <servlet>
      <servlet-name>teste</servlet-name>
      <servlet-class>Teste</servlet-class> //Nome da classe a ser acessada
   </servlet>

   <servlet-mapping>
      <servlet-name>teste</servlet-name>
      <url-pattern>/teste-ola</url-pattern> // caminho a ser digitado
   </servlet-mapping>
</web-app>


Reinicie o tomcat.

# /etc/ini.d/tomcat5.5

Agora, o endereço http://localhost:8180/teste acessará nosso arquivo jsp e o endereço http://localhost:8180/teste/teste-ola acessará nosso servlet.


Conectando ao mysql

Vamos começar de forma diferente esse item. Começaremos criando o código para acessar as tabelas mysql e em seguida iremos corrigindo os erros conforme forem aparecendo.

Considerarei que o mysql acabou de ser instalado, logo, encontra-se sem banco, tabelas, senha etc.

Criando a senha do root como 123456:

# mysqladmin -u root password 123456

Entrando no mysql

# mysql -u root -p

Basta digitar a senha criada.

Confirmando se existe banco de dados criado.

mysql> show databases;

Se aparecer empty é porque está vazio.

Criando o banco de dados DBTeste

mysql> create database dbTeste;

Confirmando se criou.

mysql> show databases;

+-------------------------+
| Database |
+-------------------------+
| dbTeste |
+-------------------------+

Acessando o Banco:

mysql> use dbTeste

Crinando uma tabela (tbTeste) com apenas um registro (codteste) para podermos testar.

mysql> create table tbTeste (codteste integer);

Verificando se a tabela foi criada.
mysql> show tables;
+-------------------+
| Tables_in_dbTeste |
+-------------------+
| tbTeste |
+-------------------+

Inserindo registros na tabela.
mysql> insert into tbTeste (codteste) value (1);

mysql> insert into tbTeste (codteste) value (7);

mysql> insert into tbTeste (codteste) value (17);

mysql> insert into tbTeste (codteste) value (37);

Listando para saber se os registros realmente foram inseridos de forma correta.

mysql> select * from tbTeste;
+----------+
| codteste |
+----------+
| 1 |
| 7 |
| 17 |
| 37 |
+----------+

Beleza, nossa base está pronta para ser usada. Vamos sair.

mysql> exit

Agora, criaremos nosso código em java para testarmos a conexão com a base de dados.

Crie um arquivo com o nome OlaBase.java, em qualquer diretório, apenas para teste, e inclua o conteúdo a seguir.


import java.sql.*;
public class OlaBase
{
   public static void main (String args[])
   {
      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");
         System.out.println("\nDrive carregado com sucesso!!!\n");
         try
         {
            Connection cn = DriverManager.getConnection(url, user, pwd);
            System.out.println("\nConexao estabelecida!!!\n");
            String sql = "select * from tbTeste";
            Statement stm = cn.createStatement();
            try
            {
               ResultSet rs = stm.executeQuery(sql);
               while (rs.next())
               {
                  System.out.println("\n" + rs.getString("codteste") + "\n");
               }
            }
               catch (Exception ex)
            {
               System.out.println("\nErro no Select!!!\n");
            }
         }
         catch (Exception ex)
         {
            System.out.println("\nErro na conexao!!!\n");
         }
      }
      catch (ClassNotFoundException ex)
      {
         System.out.println("Erro na conexao com a base de dados!!!");
         ex.printStackTrace();
      }
      catch (Exception ex)
      {
         System.out.println("Drive nao pode ser carregado!!!");
      }
      System.out.println("Olá Base!!!");
   }
}


Agora vamos compilar.

# javac OlaBase.java

Tudo deverá ocorrer OK. Então, vamos executar.

# java OlaBase

Devera aparecer a seguinte saída.

Erro na conexao com a base de dados!!!

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at OlaBase.main(OlaBase.java:11)
Ola Base!!!

Vimos nesta saída que o drive não foi encontrado (ClassNotFoundException: com.mysql.jdbc.Driver).

Então, vamos instalar o drive para mysql.
Primeiro, vamos ver se ele exeiste em nossa máquina.

# find / -name "mysql-connect*"

Se não retornar nenhum arquivo, vamos a instalação de drive.
Vamos ver se existe algum pacote para podermos instalarmos via apt-get.

# apt-cache search jdbc

Aparecerá a seguinte lista de pacotes.

haskell-hsql-doc - Multi-Database Interface System for Haskell
henplus - JDBC SQL commandline frontend with TAB-completion
hsqldb-server - Java SQL database server
libghc6-hdbc-dev - Haskell Database Connectivity, GHC6 package
libghc6-hsql-dev - Multi-Database Interface System for Haskell
libghc6-hsql-mysql-dev - Multi-Database Interface System for Haskell
libghc6-hsql-odbc-dev - Multi-Database Interface System for Haskell
libghc6-hsql-postgresql-dev - Multi-Database Interface System for Haskell
libghc6-hsql-sqlite-dev - Multi-Database Interface System for Haskell
libghc6-hsql-sqlite3-dev - Multi-Database Interface System for Haskell
libhsqldb-java - Java SQL database engine
libhsqldb-java-doc - documentation for HSQLDB
libhugs-hdbc - Haskell Database Connectivity, Hugs package
liblog4j1.2-java - Logging library for java
libmysql-java - Java database (JDBC) driver for MySQL
libodbc++-dev - C++ library for ODBC SQL database access
libodbc++-doc - C++ library for ODBC SQL database access
libodbc++4 - C++ library for ODBC SQL database access
libpg-java - Java database (JDBC) driver for PostgreSQL
libpgjava - Java database (JDBC) driver for PostgreSQL - transitional package
libpostgis-java - geographic objects support for PostgreSQL -- JDBC support
libsapdbc-java - JDBC interface to the MaxDB database system
libstruts1.2-java - Java Framework for MVC web applications
openoffice.org-base - OpenOffice.org office suite - database
postgresql-contrib-7.4 - additional facilities for PostgreSQL

No nosso caso queremos a "libmysql-java - Java database (JDBC) driver for MySQL". Então, vamos instalar.

# apt-get install libmysql-java

Após a instalação, vamos conferir se o arquivo .jar passou a existir.

# find / -name "mysql-connect*"

Agora aparecerá o arquivo, no meu caso o resultado da busca foi:
/usr/share/java/mysql-connector-java-5.0.4.jar

Então, basta colocar esse arquivo no classpath.

# export CLASSPATH=$CLASSPATH:"/usr/share/java/mysql-connector-java-5.0.4.jar"

Agora, tente executar o nosso programa.

# java OlaBase

O resultado será:


Drive carregado com sucesso!!!


Conexao estabelecida!!!


1


7


17


37

Ola Base!!!

Pronto, a conexão com a base de dados foi estabelecida.

Claro que a variável CLASSPATH não continuará não valerá quando reiniciarmos a máquina. Mas para resolver o problema, basta adicionar a linha no final do arquivo /etc/profile

echo "export CLASSPATH=\$CLASSPATH:"/usr/share/java/mysql-connector-java.jar"" >> /etc/profile

Agora, vamos voltar nosso arquivo index.jsp no diretório /var/www/teste e vamos fazer a alteração abaixo, para conectar a base de dados. Basta incluir no final de nosso arquivo o código:


<%
try
{
   Class.forName("com.mysql.jdbc.Driver");
   out.println ("<br>Drive encontrado!!!");
}
catch (ClassNotFoundException ex)
{
   out.println ("<br>Erro drive<br>");
   out.println (ex.toString());
}
catch (Exception ex)
{
   out.println ("<br>Erro ao procurar o drive<br>" + ex.toString());
}
%>


Salve o arquivo e em seu browser, acesse a url hocalhost:8180/teste

Aparecerá a página:

Olá mundo !!!
1 + 1 = 2

Erro drive
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

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:


<%@page import="java.sql.*"%>
Olá mundo !!!<br>
1 + 1 = ${1+1}
<br>

<%
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:

# cat /etc/tomcat5.5/policy.d/*.policy \
>> "$CATALINA_BASE/conf/catalina.policy"


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

deverá aparecer o seguinte conteúdo:

Olá mundo !!!
1 + 1 = 2

Drive carregado com sucesso!!!

Conexao estabelecida!!!

- 1

- 7

- 17

- 37
Advogados
Visitas