• JNDI 技术与JDBC技术的结合 简要的例子


    JNDI 技术与JDBC技术的结合既然有那么多的优点,那么我们该如何做呢?RowSet

    提供了这方面的功能JNDI 技术与JDBC技术结合的原理如下:

           使用JDBCJNDI 技术,编写一个提供数据库服务的组件,然后将它出版到某个中

    间层服务器中,侦听服务请求。接下来我们可以编写Java 应用程序查找提供数据库服务

    的组件,一旦查找到它(组件) ,就可以利用它提供的各种方法执行特定的数据库操作。

    RowSet 包定义的DataSource 接口提供了建立数据库连接的JNDI 支持。具体的方法如下

    1 首先创建一个JavaSampleDataSource 该类扩展了javax..sql.DataSource 接口

    具体实现了获取数据库连接的功能该类的代码请参考程序清单

    程序SampleDataSource.java如下:

    package example6;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.SQLException;

    public class SampleDataSource implementsjavax.sql.DataSource,

           javax.naming.Referenceable,java.io.Serializable {

           /*Constructors */

           publicSampleDataSource() {

                  //This constructor is needed by the object factory

           }

           /**Properties */

           publicString getServerName() {

                  returnserverName;

           }     public void setServerName(StringserverName) {

                  this.serverName= serverName;

           }

           publicString getDatabaseName() {

                  returndatabaseName;

           }

           publicvoid setDatabaseName(String databaseName) {

                  this.databaseName= databaseName;

           }

           /*

            * Methods inherited from DataSource

            */

           publicConnection getConnection() throws SQLException {

                  //vendor specific code to create a JDBCConnection goes here

                  try{

                         Class.forName("jdbcDriver");

                         Connectionconn = DriverManager.getConnection("jdbcURL", "user",

                                       "pass");

                         returnconn;

                  }catch (Exception fe) {

                         //to do nothing

                  }

                  returnnull;

           }

           publicConnection getConnection(String username, String password)

                         throwsSQLException {

                  //vendor specific code to create a JDBCConnection goes here

                  Stringuser = username;

                  Stringpass = password;

                  try{

                         Class.forName("jdbcDriver");

                         Connectionconn = DriverManager

                                       .getConnection("jdbcURL",user, pass);

                         returnconn;

                  }catch (Exception fe) {

                         //to do nothing

                  }

                  returnnull;

           }

           publicjava.io.PrintWriter getLogWriter() throws SQLException {

                  //vendor specific code goes here

                  return null;

           }

           publicvoid setLogWriter(java.io.PrintWriter out) throws SQLException {

                  //vendor specific code goes here

           }

           publicvoid setLoginTimeout(int seconds) throws SQLException {

                  //vendor specific code goes here

           }

           publicint getLoginTimeout() throws SQLException {

                  return1;

                  //vendor specific code goes here

           }

           privateString serverName = null;

           privateString databaseName = null;

    }

    SampleDataSource.java类中定义了getConnection ()方法利用该方法可以获取java.sql.Connection  接口的实例对象。

    (2) 接下来,我们应该编写一个Java 应用程序,将上面编写好的SampleDataSource

    组件出版到中间层服务器中去。假设这个应用程序名为JNDIExam.java,那么它应该含有

    下面的代码段。

    SampleDataSource sds = newSampleDataSource();

    sds.setServerName(“rainbow”);

    sds.setDatabaseName("fancy");

    Context ctx = new InitialContext();

    ctx.bind(“jdbc/EmployeeDB” sds);

    上面的代码中,第一行创建了一个SampleDataSource 对象,接下来的两行代码分别调

    setServerName()方法和setDatabaseName()方法,初始化SampleDataSource 对象的属性

    然后创建JNDI 命名环境对象ctx ,将SampleDataSource 类的实例对象sds 绑定到JNDI 名jdbc/EmployeeDB 中。

           编译运行JNDIExam.java 程序,将JNDI 服务发布出去。除了使用这个方法,也可以

    使用某些GUI 工具可视化出版JNDI 服务。

    (3) 下一步,我们应该编写客户端(此处指相对的客户端,某台服务器相对于另一台

    服务器来说,可以是服务端,也可以是客户端)的Java 应用程序,如JSP 程序等,以便使用JNDI 服务,请看下面的JSP 代码段(try/catch 模块已经省略了), 关于这一段JSP 代码的解释,读者可以参考6.4节的相关解释。

    例:

    <%

    Context ctx = new InitialContext();

    DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);

    Connection con = ds.getConnection (jdbc/webDatabase” "sa”“");

    con.setAutoCommit(false);

    Statement stmt=con.createStatement ();

    ResultSet rs=stmt.executeQuery("SELECT* FROM goods");

    while(rs.next())

    {

    out.println(rs.getString(1));

    }

    con.commit();

    con.close();

    %>

  • 相关阅读:
    Oracle学习笔记:oracle的表空间管理和sqlserver的文件组对比
    Oracle学习笔记:一个特殊的ORA12541错误原因
    Oracle学习笔记:通过种子数据库设置dbid为指定值
    Oracle学习笔记:使用rman duplicate {to|for} 创建数据库
    Oracle学习笔记:利用rman数据库备份,手工创建clone数据库
    使用Cufon技术实现Web自定义字体
    分享七个非常有用的Android开发工具和工具包
    60佳灵感来自大自然的网页设计作品欣赏
    20个独一无二的图片滑动效果创意欣赏
    40个幻灯片效果在网页设计中的应用案例
  • 原文地址:https://www.cnblogs.com/phoebus0501/p/1914234.html
Copyright © 2020-2023  润新知