zoukankan      html  css  js  c++  java
  • 代码中jndi数据源的支持

    项目中基本都使用Spring框架,支持jndi还是很简单的,只需在spring配置文件中加入

    		<!-- 使用jndi配置数据源 -->
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">  
            <property name="jndiName">  
                <value>java:comp/env/jndi数据源名称</value>  
            </property>  
        </bean>
    

     在本地开发中,一般使用tomcat,不会启动weblogic,所以,要配置context.xml以支持jndi

    路径  /WebContent/META-INF/context.xml

    内容基本如下

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    	<Resource
    	 name="jndi数据源名称"
    	 auth="Container"
    	 type="javax.sql.DataSource"
    	 username="xx"
    	 password="xx"
    	 url="jdbc:oracle:thin:@10.10.68.248:1521:orcl"
    	 driverClassName="oracle.jdbc.driver.OracleDriver"
    	 maxIdle="10"
    	 maxWait="1000"
    	 maxActive="20"
    	/>
    </Context>
    

     web.xml可以配置

      <!-- 
    	  JNDI配置的资源引用:
    	  • res-ref-name:表示引用资源的名称
    	  • res-type:此资源对应的类型为javax.sql.DataSource
    	  • res-auth:容器授权管理
    	   -->
    	   <!--Oracle数据库JNDI数据源引用 -->
    	  <resource-ref>
    	      <description>Oracle DB Connection</description>
    	      <res-ref-name>jndi数据源名称</res-ref-name>
    	      <res-type>javax.sql.DataSource</res-type>
    	      <res-auth>Container</res-auth>
    	 </resource-ref>
    

     项目中如果不使用spring框架,代码需要兼容驱动管理与jndi的连接的方式,以提高健壮性,部分伪代码

        public Connection getConnection()
            throws SQLException
        {
            if(isJndi)
                return getJndiConnection();
            else
                return getDriverConnection();
        }
    
       private void initJndiConnection()
            throws NamingException
        {
            Context ctx = new InitialContext();
            ds = (DataSource)ctx.lookup(config.getJndi());
        }
    
        public Connection getJndiConnection()
            throws SQLException
        {
                return ds.getConnection();
        }
    
    private Connection getDriverConnection()
            throws SQLException
        {
                    Connection conn = DriverManager.getConnection(config.getUrl(), config.getUserName(), getPassword(config));
            return conn;
        }
    
  • 相关阅读:
    TensorFlow Executor解析
    面试复习
    [洛谷]P1880 石子合并问题
    [西建大ACM协会]OJ平台如何使用
    [ACM] 相关OJ及在线运行代码网站
    [MySQL] Win10 安装MySQL5.7.27
    [PTA] PAT(A) 1012 The Best Rank (25 分)
    [PTA] PAT(A) 1011 World Cup Betting (20 分)
    [PTA] PAT(A) 1010 Radix (25 分)
    [PTA] PAT(A) 1009 Product of Polynomials (25 分)
  • 原文地址:https://www.cnblogs.com/whytohow/p/5675920.html
Copyright © 2011-2022 走看看