简体   繁体   中英

unable to switch to different datasources using jndi name from the same application

I am facing some problem in java regarding the datasource switching..i have written the code for datasource look up even though my application takes the default jndi name which is given in my property file.I want to give access to users to different databases..but i am unable to switch to different datasources using jndi name..please help written the below code for datasource lookup........

Context ctx = new InitialContext();
if (dataSource == null) 
{
 dataSource = (DataSource) ctx.lookup(jndi_name);
}

This i have done in my project. I am using Tomcat,Servlet and mysql database. In tomcat there have server.xml file we need to paste the below details and save and restart the tomcat. In servlet app we required two jndi using this code dataSource = (DataSource) ctx.lookup(jndi_name); } jndi_name be different and then try.

  <Resource name="jdbc/name(any name --this will use in project(jndi)" auth="Container" type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/name(same)">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <!-- Maximum number of dB connections in pool. Make sure you
     configure your mysqld max_connections large enough to handle
     all of your db connections. Set to 0 for no limit.
     -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool.
     Set to 0 for no limit.
     -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <!-- Maximum time to wait for a dB connection to become available
     in ms, in this example 10 seconds. An Exception is thrown if
     this timeout is exceeded.  Set to -1 to wait indefinitely.
     -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>


    <!-- MySQL dB username and password for dB connections  -->
    <parameter>
     <name>username</name>
     <value>database username</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>database password</value>
    </parameter>

    <!-- Class name for MYSQL JDBC driver -->
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>

    <!-- The JDBC connection url for connecting to your MySQL dB.
     The autoReconnect=true argument to the url makes sure that the
     mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
     connection.  mysqld by default closes idle connections after 8 hours.
     -->
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/database Name</value>
    </parameter>    

    <parameter>
      <name>validationQuery</name>
      <value>SELECT 1</value>
    </parameter>

  </ResourceParams> 

<Resource name="jdbc/name1" auth="Container" type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/name1">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <!-- Maximum number of dB connections in pool. Make sure you
     configure your mysqld max_connections large enough to handle
     all of your db connections. Set to 0 for no limit.
     -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool.
     Set to 0 for no limit.
     -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <!-- Maximum time to wait for a dB connection to become available
     in ms, in this example 10 seconds. An Exception is thrown if
     this timeout is exceeded.  Set to -1 to wait indefinitely.
     -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>


    <!-- MySQL dB username and password for dB connections  -->
    <parameter>
     <name>username</name>
     <value>database username</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>database Password</value>
    </parameter>
    <!-- Class name for MYSQL JDBC driver -->
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>

     <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/another databasename</value>
    </parameter>    

    <parameter>
      <name>validationQuery</name>
      <value>SELECT 1</value>
    </parameter>

  </ResourceParams> 

</Context>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM