informix jdbc_技术提示:使用Tomcat为Informix JDBC / JCC连接池设置全局JNDI映射

袁晟
2023-12-01

informix jdbc

IBM Informix Dynamic服务器(IDS)以易于管理,提供高可用性和高性能的联机事务处理功能而闻名世界。 它还有助于简化和自动化与为中型企业应用程序部署数据库实例相关的许多任务。 最新版本的IBM Informix Dynamic服务器IDS v11.50(代号Cheetah 2)具有HDR技术和MACH-11(一种新的,灵活的,可扩展的系统监视和管理工具(OAT))功能,可提供高可用性。 ,以及许多安全功能。

Apache Tomcat提供了用于Java™代码的HTTP Web服务器环境,并具有用于配置和编辑配置文件的管理工具。 最新版本的Apache Tomcat 6.0设计为可以在Java SE 5.0和更高版本上运行,并使用Eclipse JDT Java编译器来编译JSP页面,而JSP页面只需要运行Tomcat。

JNDI DataSource及其在已部署应用程序中的优势

JNDI是Java 2平台企业版(J2EE)的重要组成部分,因为它提供了用于定位Java对象,机器,用户和服务或连接到数据库的标准接口。 命名和目录服务是JDNI的基础。 目录在分层树中存储和组织信息,其中树中的每个节点都有一个有效的名称以及它自己的一组关联数据。 目录服务提供对此信息的访问。

命名服务是一种目录服务,它将网络资源的名称映射到其网络地址。 它能够将名称附加到网络中的对象,也可以使用该名称查找对象。 这些对象可以被许多应用程序使用。 基于Java的客户端使用JNDI与命名和目录系统进行交互。 使用JNDI,Java应用程序可以从目录读取和写入Java对象。

数据源是一种存储数据的方法。 它是Java编程语言中数据源的表示。 它具有描述其表示的现实世界数据源的某些属性。 一些数据源属性包括:

  • databaseName :应用程序将连接到的数据库服务器的名称
  • dataSourceName :由数据源表示的对象的逻辑名称
  • networkProtocol :用于与服务器通信的协议
  • password :用户的数据库密码
  • portNumber :服务器正在侦听请求的端口

DataSource对象与JNDI命名服务一起使用,并且其创建和管理与应用程序完全分开。 这使代码更具可移植性。 同样,在对有关数据源的信息进行任何更改的情况下,仅需要更改数据源属性,而不是更改使用该数据源的每个应用程序。 这有助于简化代码维护。

由于DataSource对象是使用JNDI命名服务注册的,因此Java应用程序可以使用逻辑名称作为数据源,并使用JNDI命名服务注册该逻辑名称。 然后,JNDI命名服务将与该逻辑名关联的DataSource对象提供给应用程序,然后可以将其用于连接到它表示的数据源。

使用数据源的另一个好处是,应用程序开发人员可以使用连接池功能来提高性能,而XADataSource可以用于处理分布式事务。

在Informix上配置JNDI数据源

第1步:
声明一个环境变量CATALINA_HOME,该变量指向Tomcat的安装根目录。

第2步:
将驱动程序文件复制到$ CATALINA_HOME / common / lib。 。
因此,对于Informix JDBC驱动程序,应将ifxjdbc.jar和ifxjdbcx.jar复制到上述目录中。
对于JAVA Common Client(JCC)驱动程序,应该将db2jcc.jar复制到上述目录。

第三步:
打开文件context.xml,该文件位于$ CATALINA_HOME / conf目录下。 将以下条目添加到context.xml。

清单1.对于Informix JDBC驱动程序:
<Resource name="jdbc/<JNDI Name>"
          auth="Container" type="javax.sql.DataSource"
          driverClassName="com.informix.jdbc.IfxDriver"
          url="jdbc:informix-sqli://<Informix Host>:<Informix Socket Port>/<Database Name
                >:INFORMIXSERVER=<Informix Server Name>" 
          username="<User Name>"
          password="<Password>" maxActive="100" maxIdle="30" maxWait="10000"
          removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>
清单2.对于JAVA通用客户端驱动程序(用于JDBC和SQLJ的IBM Data Server驱动程序)
<Resource name="jdbc/<JNDI Name>"
          auth="Container" type="javax.sql.DataSource"
          driverClassName="com.ibm.db2.jcc.DB2Driver"
          url="jdbc:db2://<Informix Host>:<Informix DRDA Port>/<Database Name>"
          username="<User Name>"
          password="<Password>" maxActive="100" maxIdle="30" maxWait="10000" 
          removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>

第4步:
打开位于$ CATALINA_HOME / conf目录下的文件context.xml。 将这些条目添加到context.xml下。

清单3.对于Informix JDBC驱动程序
<Resource
name="jdbc/<JNDI Name>"
      type="javax.sql.DataSource"
      validationQuery="select * from systables"
      url="jdbc:informix-sqli://<Informix Host>:<Informix Socket Port>/<Database Name
             >:INFORMIXSERVER=<Informix Server Name>"
      password="<Password>"
      driverClassName="com.informix.jdbc.IfxDriver"
      maxActive="4"
      maxWait="5000"
      maxIdle="2"
      username="<UserName>"/>
清单4.对于JAVA通用客户端驱动程序(用于JDBC和SQLJ的IBM Data Server驱动程序):
<Resource
      name="jdbc/<JNDI Name>"
      type="javax.sql.DataSource"
      validationQuery="select * from systables"
      url="jdbc:db2://<Informix Host>:<Informix DRDA Port>/<Database Name>;"
      password="<Password>"
      driverClassName="com.ibm.db2.jcc.DB2Driver"
      maxActive="4"
      maxWait="5000"
      maxIdle="2"
      username="<Username>"/>

步骤5:
现在转到Web应用程序安装位置下的WEB-INF目录(例如,$ CATALINA_HOME / webapps / jsp-examples / WEB-INF)。 打开名为web.xml的文件。 输入JNDI DataSource的条目,如清单5所示:

清单5.对于JAVA通用客户端驱动程序:
<description>Informix Test Connection</description>
  <resource-ref>
      <description>Informix DB Connection</description>
      <res-ref-name>jdbc/<JNDI Name></res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
</resource-ref>

步骤6:
创建一个JSP文件,如清单6所示,以测试连接性并将其放置在应用程序虚拟目录中。

清单6.对于JAVA通用客户端驱动程序:
<%@page import="java.sql.*"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.*"%>
<html>
<body>
<%
Context initCtx=new InitialContext();
if ( initCtx == null )
{
out.println("No Context <br>");
}
else
{
out.println("Context Found <br>");
Context envContext = (Context) initCtx.lookup("java:/comp/env");
DataSource db = (DataSource) envContext.lookup("jdbc/informix");
if ( initCtx == null )
{
out.println("No Informix JDBC JNDI Found <br>");
}
else
{
out.println("Informix JDBC JNDI Found <br>");
Connection conn = db.getConnection();
out.println("Got Connection <br>");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Orders");  
       // Assuming there is table in your databse and one of the column is order id
out.println("order id <br> ================================= <br> ");
while(rs.next()){
  out.print(rs.getString(1)+"<br>");
}
out.println("==========Test Completed======================= <br> ");
rs.close();
stmt.close();
conn.close();
}
}
%>

步骤7:
重新启动Tomcat服务器,以使更改生效。

步骤8:
打开测试JSP文件,以查看是否能够获取数据。 此时,您应该能够从Informix数据库访问数据。

摘要

在本文中,我们描述了如何在Tomcat中使用IDS。 我们还研究了JNDI及其优势。 在完成了本文介绍的步骤之后,您应该能够同时使用Informix JDBC驱动程序和Java Common Client(JCC)驱动程序来配置JNDI数据源。


翻译自: https://www.ibm.com/developerworks/data/library/techarticle/dm-0808mathada/index.html

informix jdbc

 类似资料: