1 Reply Latest reply on Jul 9, 2002 9:56 PM by Joel Vogt

    PostgresDB JNDI problems

    Jonathan Weiss Newbie

      Hi-

      I vacillated between putting this here or in the newbie section, but this seemed more appropriate. I hope this is the right place.

      Anyway, after following the information in several forum postings (particularly http://www.jboss.org/modules/bb/index.html?module=bb&op=viewtopic&t=forums/ I went ahead and set up PostgresDS for my Jboss 3.0.0 implementation. During the startup process, I get no errors and in fact get a success message for initialization of the postgres-service.xml. I also get the following message:

      [PostgresDS] Bound connection factory for resource adapter 'JBoss LocalTransaction JDBC Wrapper' to JNDI name 'java:/PostgresDS'

      By way of testing the Postgres datasource, I wrote the following little program to test the connection.

      import java.sql.*;
      import javax.sql.*;
      import javax.naming.*;
      import java.util.*;

      public class testConn {

      public static void main(String[] args){

      Context ctx = null;
      Properties h = new Properties();
      h.put(Context.INITIAL_CONTEXT_FACTORY,
      "org.jnp.interfaces.NamingContextFactory");
      h.put(Context.PROVIDER_URL,
      "jnp://localhost:1099");

      testConn tc=new testConn();

      try {
      ctx = new InitialContext(h);

      javax.sql.DataSource ds
      = (javax.sql.DataSource) ctx.lookup ("PostgresDS");
      java.sql.Connection conn = ds.getConnection();

      Statement stmt = conn.createStatement();
      stmt.execute("select * from test");
      ResultSet rs = stmt.getResultSet();
      tc.getTest(rs);

      stmt.close();
      conn.close();
      } catch (NamingException e) {
      System.out.println("Could not get JNDI datasource.");
      System.out.println("ERROR: " + e.toString());
      }catch (SQLException se){}
      try {ctx.close();}
      catch (Exception e) {}
      }

      public void getTest(ResultSet rs)throws SQLException{
      while (rs.next()) {
      String test = rs.getString("NAME");
      System.out.println("TEST: "+ test);
      }
      }
      }

      The result is "NameNotFoundException: PostgresDS not bound". I've used similar (context) syntax to test JNDI for a session bean that I wrote and that works fine.

      Any thoughts? I'm a bit perplexed.

      Thanks,
      jonathan