On Jan 7, 2008, at 10:32 AM, jpmlpool wrote:


Hello

    I am still struggling with Geronimo and MySql. I tried to change
the deploy plans following some articles, but I still can not access
MySql server from Geronimo.
    Attached are related files, because I zipped Ear and War projects
created on Eclipse, but I cannot send it to this email address.

If you know my errors, please help me. At the bottom is my previous
email with more details.

Environments or what I did
(1)  Geronimo 2.0.2
(2)  Database pool created from Geronimo Admin console
       Database pool : QiMySql
       Database : hellodb
       a database Table : pet
(3) Eclipse 3.3.1 with WTP
(4) OS : Windows 2000
(5) SqlPetStoreEar and SqiPetStoreWar projects on Eclipse

Your application needs a dependency on the database pool you have set up. Something like

====== SqlPetStoreEar/EarContent/METF-INF/geronimo-application.xml ======

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/ application-1.1"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1";
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1";
application-name="SqlPetStoreEar">
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>com.sn.web.db.mysql.demo.pet</sys:groupId>
      <sys:artifactId>MySqlPetStoreEarId</sys:artifactId>
      <sys:version>1.0</sys:version>
      <sys:type>ear</sys:type>
    </sys:moduleId>
    <sys:dependencies>
        <sys:dependency>
            <sys:groupId>console.dbpool</sys:groupId>
            <sys:artifactId>QiMySql</sys:artifactId>
            <sys:type>rar</sys:type>
        </sys:dependency>
    </sys:dependencies>
  </sys:environment>

</application>


You should check that the dependency matches what the console comes up with when it deploys the pool -- in particular I'm unsure of the type.

Hope this helps
david jencks


John Qi

=============================


====== SqlPetStoreEar/EarContent/METF-INF/application.xml ======

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:application="http://java.sun.com/xml/ns/javaee/ application_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_5.xsd"; id="Application_ID"
version="5">
  <module>
    <web>
      <web-uri>SqlPetStoreWar.war</web-uri>
      <context-root>SqlPetStoreWar</context-root>
    </web>
  </module>
</application>

====== SqlPetStoreEar/EarContent/METF-INF/geronimo-application.xml ======

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/ application-1.1"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1";
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1";
application-name="SqlPetStoreEar">
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>com.sn.web.db.mysql.demo.pet</sys:groupId>
      <sys:artifactId>MySqlPetStoreEarId</sys:artifactId>
      <sys:version>1.0</sys:version>
      <sys:type>ear</sys:type>
    </sys:moduleId>
  </sys:environment>

</application>

====== SqlPetStoreWar/WebContent/WEB-INF/geronimo-web.xml ======

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1";
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1";
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1";
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1";>
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>com.sn.web.db.mysql.demo.pet</sys:groupId>
      <sys:artifactId>SqlPetStoreWarId</sys:artifactId>
      <sys:version>1.0</sys:version>
      <sys:type>war</sys:type>
    </sys:moduleId>


  </sys:environment>

  <context-root>/SqlPetStoreWar</context-root>

</web-app>

====== SqlPetStoreWar/EarContent/WEB-INF/web.xml ======

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; id="WebApp_ID"
version="2.5">
  <display-name>SqlPetStoreWar</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ListPets</display-name>
    <servlet-name>ListPets</servlet-name>
<servlet-class>com.sn.web.db.mysql.demo.pet.ListPets</servlet- class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListPets</servlet-name>
    <url-pattern>/ListPets</url-pattern>
  </servlet-mapping>

</web-app>

================ ListPets.java ===============

 protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
 {
  // TODO Auto-generated method stub
  this.getPets(request, response);
 }

  private void getPets(HttpServletRequest request, HttpServletResponse
response)
 {
  Statement stmt = null;
  ResultSet rs = null;

  try
  {
   InitialContext ctx = new InitialContext();
   // error : can not find this data source
   DataSource ds = (DataSource)ctx.lookup("java:comp/env/QiMySql");

// error : this line does not work on Geronimo, but works fine in java
application.
   Class.forName("com.mysql.jdbc.Driver").newInstance();

   String url = "jdbc:mysql:///hellodb?user=root&password=hello";
   Connection con = DriverManager.getConnection(url);

   stmt = con.createStatement();
   String sql = "SELECT * FROM PET";
   rs = stmt.executeQuery(sql);
   while (rs.next())
   {
    String no = rs.getString("NAME");
    String lang = rs.getString("OWNER");
    String msg = rs.getString("SEX");
    System.out.println(no + " " + lang + " " + msg);
   }
   stmt.close();
   con.close();
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  finally
  {
   if (rs != null)
   {
    try
    {
     rs.close();
    }
    catch (SQLException sqlEx)
    {
    }
   }

   if (stmt != null)
   {
    try
    {
     stmt.close();
    }
    catch (SQLException sqlEx)
    {
    }
   }

   rs = null;
   stmt = null;
  }

 }

=============================


----- Original Message -----
From: "jpmlpool" <[EMAIL PROTECTED]>
To: <user@geronimo.apache.org>
Sent: Wednesday, January 02, 2008 9:40 AM
Subject: question about MySql and Geronimo


Happy New Year !

    What I want to do are
(1) when I start Geronimo, MySql server is started automatically by
Geronimo.
(2) I can access MySql,  just like now I can access Derby.
(3) if possible, for example, there are two Derbys and two MySqls, I can access them for different purpose. I do not know if this is possible,
if
     possible, HOW TO DO.

    What I did are
(1) downloaded MySql 5.0.54 and installed it. (OK)
(2) from console I can access the MySql. (OK)

mysql> show tables;

+-------------------+

| Tables_in_hellodb |

+-------------------+

| pet              |

| wishtable        |

+-------------------+

2 rows in set (0.00 sec)



mysql> SELECT * FROM pet;

+----------+-------+---------+------+------------+------------+

| name      | owner | species | sex  | birth        | death      |

+----------+-------+---------+------+------------+------------+

| Fluffy   |         | Harold  | c    | 0000-00-00 | 1993-02-04 |

| Claws    |         | Gwen    | c    | 0000-00-00 | 1994-03-17 |

| Buffy    |         | Harold  | d    | 0000-00-00 | 1989-05-13 |

| Fang     |         | Benny   | d    | 0000-00-00 | 1990-08-27 |

| Bowser   |         | Diane   | d    | 0000-00-00 | 1979-08-31 |

| Chirpy   |         | Gwen    | b    | 0000-00-00 | 1998-09-11 |

| Whistler | Gwen    | bird    |      | 1997-12-09 | NULL       |

| Slim     |         | Benny   | s    | 0000-00-00 | 1996-04-29 |

+----------+-------+---------+------+------------+------------+

8 rows in set (0.00 sec)



(3) downloaded the MySql driver mysql-connector-java-3.1.12.jar

     through Geronimo's console.

the driver is placed in repository\mysql\mysql-connector-java \3.1.12



(4) From Eclipse I created a Java Application, and I can

     access the MySql using Java code below. The results are correct.



     Class.forName("com.mysql.jdbc.Driver").newInstance();

     String url = "jdbc:mysql:///hellodb?user=abc&password=xyz";
     Connection con = DriverManager.getConnection(url);



(5) I created a Dynamic web project and a servlet, and used the

     same code in the servlet as above, but I got next error message.



java.lang.ClassNotFoundException: com.mysql.jdbc.Driver in classloader
com.sn.web.db.mysql.demo.pet/SqlDemoPetStoreId/1.0/war
 at

org.apache.geronimo.kernel.config.MultiParentClassLoader.loadOptimized Class(
MultiParentClassLoader.java:428)
 at

org.apache.geronimo.kernel.config.MultiParentClassLoader.loadClass (MultiPare

ntClassLoader.java:278)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClassInternal(Unknown Source)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Unknown Source)
 at com.sn.web.db.mysql.demo.pet.ListPets.getPets(ListPets.java:82)
 at com.sn.web.db.mysql.demo.pet.ListPets.doGet(ListPets.java:43)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)

.....



Do you have any ideas ?



Thanks in advance.



John Qi










Reply via email to