Automatic Reset of Connection Pools

Is there a way to have connection pools reset when the database they are pointing to restarts?

We are currently using these two options :
Test Reserved Connections
When this feature is set to true, WebLogic Server tests a connection before giving it to the client
Test Frequency
The number of seconds (between 0 and a positive 32-bit integer) between when WebLogic Server tests unused database connections
Nik
Message was edited by krisnik at Oct 27, 2004 8:42 AM

Similar Messages

  • BEA-001156 - connection pool reset failed on WLS 8.1.6

    Hi,
    I run WLS 8.1.6 on Linux and JRockit 1.4.2_12. I got the following error when I tried to reset a connection pool manually from the console. This does not happen all the time, so it is hard to reproduce. There is no change to database login credential. Any suggestions are appreciated. Thanks in advance.
    BEA-141132
         Dynamic invocation while executing action reset on etg:Locat
         ion=nyclrwp_14654_2,Name=testPool,ServerRuntime=mycluster,
         Type=JDBCConnectionPoolRuntime MBean instance
         failed. The method reset with signature [] was invoked with
         parameters as [].
    weblogic.common.ResourceException: Refresh operation was partially successful, (1)
                        out of (1) resources could not be refreshed.
         at weblogic.common.resourcepool.ResourcePoolImpl.refresh(ResourcePoolImpl.java:669)
         at weblogic.jdbc.common.internal.ConnectionPool.reset(ConnectionPool.java:789)
         at weblogic.jdbc.common.internal.ConnectionPoolRuntimeMBeanImpl.reset(ConnectionPoolRuntimeMBeanImpl.java:420)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
         at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:948)
         at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:491)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:434)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:429)
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:35)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    BEA-001156
         Stack trace associated with message 001129 follows:
    java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to
              this exception for the reason(s).
         at com.sybase.jdbc2.jdbc.ErrorMessage.raiseError(ErrorMessage.java:506)
         at com.sybase.jdbc2.tds.Tds.processLoginAckToken(Tds.java:3224)
         at com.sybase.jdbc2.tds.Tds.doLogin(Tds.java:483)
         at com.sybase.jdbc2.tds.Tds.login(Tds.java:405)
         at com.sybase.jdbc2.jdbc.SybConnection.tryLogin(SybConnection.java:218)
         at com.sybase.jdbc2.jdbc.SybConnection.regularConnect(SybConnection.java:195)
         at com.sybase.jdbc2.jdbc.SybConnection.<init>(SybConnection.java:174)
         at com.sybase.jdbc2.jdbc.SybConnection.<init>(SybConnection.java:126)
         at com.sybase.jdbc2.jdbc.SybDriver.connect(SybDriver.java:179)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:251)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.refreshResource(ConnectionEnvFactory.java:330)
         at weblogic.common.resourcepool.ResourcePoolImpl.refreshResource(ResourcePoolImpl.java:1694)
         at weblogic.common.resourcepool.ResourcePoolImpl.refreshAvlResources(ResourcePoolImpl.java:1982)
         at weblogic.common.resourcepool.ResourcePoolImpl.refresh(ResourcePoolImpl.java:664)
         at weblogic.jdbc.common.internal.ConnectionPool.reset(ConnectionPool.java:789)
         at weblogic.jdbc.common.internal.ConnectionPoolRuntimeMBeanImpl.reset(ConnectionPoolRuntimeMBeanImpl.java:420)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
    BEA-001129
         Received exception while creating connection for pool "cpl1C
         onnectionPool": JZ00L: Login failed. Examine the SQLWarnings
         chained to this exception for the reason(s).
    BEA-001128 Connection for pool "testPool" closed.
    BEA-001099 Connection pool "testPool" reset by "system"

    lei wang wrote:
    Hi,
    I run WLS 8.1.6 on Linux and JRockit 1.4.2_12. I got the following error when I tried to reset a connection pool manually from the console. This does not happen all the time, so it is hard to reproduce. There is no change to database login credential. Any suggestions are appreciated. Thanks in advance.
    Please tell me why you are resetting the pool. The reason may have something
    to do with the failure messages below. The root cause of these messages is
    that the pool is trying to make a new JDBC connection to Sybase, in exactly
    the same way it does all the time, but for whatever reason, the DBMS is
    refusing the connection request. The pool should be OK anyway, ongoing,
    as long as/when the DBMS is back up and accepting connection requests.
    Joe
    >
    BEA-141132
         Dynamic invocation while executing action reset on etg:Locat
         ion=nyclrwp_14654_2,Name=testPool,ServerRuntime=mycluster,
         Type=JDBCConnectionPoolRuntime MBean instance
         failed. The method reset with signature [] was invoked with
         parameters as [].
    weblogic.common.ResourceException: Refresh operation was partially successful, (1)
                        out of (1) resources could not be refreshed.
         at weblogic.common.resourcepool.ResourcePoolImpl.refresh(ResourcePoolImpl.java:669)
         at weblogic.jdbc.common.internal.ConnectionPool.reset(ConnectionPool.java:789)
         at weblogic.jdbc.common.internal.ConnectionPoolRuntimeMBeanImpl.reset(ConnectionPoolRuntimeMBeanImpl.java:420)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
         at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:948)
         at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:491)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:434)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:429)
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:35)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    BEA-001156
         Stack trace associated with message 001129 follows:
    java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to
              this exception for the reason(s).
         at com.sybase.jdbc2.jdbc.ErrorMessage.raiseError(ErrorMessage.java:506)
         at com.sybase.jdbc2.tds.Tds.processLoginAckToken(Tds.java:3224)
         at com.sybase.jdbc2.tds.Tds.doLogin(Tds.java:483)
         at com.sybase.jdbc2.tds.Tds.login(Tds.java:405)
         at com.sybase.jdbc2.jdbc.SybConnection.tryLogin(SybConnection.java:218)
         at com.sybase.jdbc2.jdbc.SybConnection.regularConnect(SybConnection.java:195)
         at com.sybase.jdbc2.jdbc.SybConnection.<init>(SybConnection.java:174)
         at com.sybase.jdbc2.jdbc.SybConnection.<init>(SybConnection.java:126)
         at com.sybase.jdbc2.jdbc.SybDriver.connect(SybDriver.java:179)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:251)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.refreshResource(ConnectionEnvFactory.java:330)
         at weblogic.common.resourcepool.ResourcePoolImpl.refreshResource(ResourcePoolImpl.java:1694)
         at weblogic.common.resourcepool.ResourcePoolImpl.refreshAvlResources(ResourcePoolImpl.java:1982)
         at weblogic.common.resourcepool.ResourcePoolImpl.refresh(ResourcePoolImpl.java:664)
         at weblogic.jdbc.common.internal.ConnectionPool.reset(ConnectionPool.java:789)
         at weblogic.jdbc.common.internal.ConnectionPoolRuntimeMBeanImpl.reset(ConnectionPoolRuntimeMBeanImpl.java:420)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
    BEA-001129
         Received exception while creating connection for pool "cpl1C
         onnectionPool": JZ00L: Login failed. Examine the SQLWarnings
         chained to this exception for the reason(s).
    BEA-001128 Connection for pool "testPool" closed.
    BEA-001099 Connection pool "testPool" reset by "system"

  • What's the difference between using a connection pool and a datasource

    Howdy. I figure this is a newbie question, but I can't seem to find an
    answer.
    In the docs at bea, the datasource docs say
    "DataSource objects provide a way for JDBC clients to obtain a DBMS
    connection. A DataSource is an interface between the client program and the
    connection pool. Each data source requires a separate DataSource object,
    which may be implemented as a DataSource class that supports either
    connection pooling or distributed transactions."
    In there it says the datasource uses the connection pool, but other than
    that, what is the difference between a connection pool and a datasource?

    Thanks for the info. I think it makes some sense. But it's a bit greek.
    I'm sure it'll make more sense the more I work with it. Thanks.
    "Chuck Nelson" <[email protected]> wrote in message
    news:3dcac1f5$[email protected]..
    >
    Peter,
    Here is a more formal definition of a DataSource from the Sun site
    "A factory for connections to the physical data source that thisDataSource object
    represents. An alternative to the DriverManager facility, a DataSourceobject
    is the preferred means of getting a connection. An object that implementsthe
    DataSource interface will typically be registered with a naming servicebased
    on the JavaTM Naming and Directory (JNDI) API.
    The DataSource interface is implemented by a driver vendor. There arethree types
    of implementations:
    Basic implementation -- produces a standard Connection object
    Connection pooling implementation -- produces a Connection object thatwill automatically
    participate in connection pooling. This implementation works with amiddle-tier
    connection pooling manager.
    Distributed transaction implementation -- produces a Connection objectthat may
    be used for distributed transactions and almost always participates inconnection
    pooling. This implementation works with a middle-tier transaction managerand
    almost always with a connection pooling manager.
    Does that help clarify the distinction?
    Chuck Nelson
    DRE
    BEA Technical Support

  • Reset connections in connection pool

    Hi,
    After DB restart (or connection failure) I try to recover the server. In order to do this, I want to tell to container connection pool to reset (clear) all available connections.
    Does anybody knows how I can tell to container connection pool to reset (clear) all its connections (in standard way, or at least in Jboss)?
    Thanks,
    Igor.

    Am not sure in JBoss....but as far as my knowledge with WL gies...you don't have to do anything....The WL container continuosly tries to sync the connection with the DB....there is a Retry interval if the Connections to the DB fails....Better the Check out the Official Docs

  • Resetting a JDBC connection pool

    I can write a cron job that calls RESET_POOL for periodic resets.
    I wanted to confirm that there is no setting in the weblogic console that allows me to specify a time and weblogic perform the reset at that interval. Basically do the cron for me.
    Thanks,
    pat

    JDBC->Connection Pools->Name of Pool->Connections
    ->Advanced options
    Test Frequency
    The number of seconds (between 0 and a positive 32-bit integer) between when WebLogic Server tests unused database connections
    Nik

  • Error after resetting connection pool

     

    FYI on the fix--
    I moved back from sp9 to sp8 and the bug went away. Can't wait for sp10...
    --tka
    "tracya" <[email protected]> wrote in message
    news:3b44bdb5$[email protected]..
    I am having a problem with connection pools using 5.1.0, jdk 1.2.2, andthe
    oracle 8.1.7 thin drivers.
    WL starts up fine and will happily service db transactions until I resetthe
    connection pool. The connection pool seems to reset fine, but then all
    future db connections are corrupt. Has anyone else seen anything likethis?
    >
    Thanks!
    I am using the following code to reset the pool:
    Hashtable htEnv = new Hashtable();
    htEnv.put(InitialContext.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");// URL for the WebLogic Server
    htEnv.put(InitialContext.PROVIDER_URL, "t3://localhost:" +
    GetAppServerListenPortNum());
    htEnv.put(InitialContext.SECURITY_PRINCIPAL, sAppUser); //system
    htEnv.put(InitialContext.SECURITY_CREDENTIALS, sAppUserPassword);
    InitialContext icContext = new InitialContext(htEnv);
    JdbcServices jdbc =
    (JdbcServices)icContext.lookup("weblogic.jdbc.JdbcServices");
    jdbc.getPool(sPoolName).reset();
    Here is the code from the props file:
    weblogic.jdbc.connectionPool.DBPool_1=\
    url=jdbc:oracle:thin:@niledev:1521:niledev,\
    driver=oracle.jdbc.driver.OracleDriver,\
    loginDelaySecs=1,\
    initialCapacity=1,\
    maxCapacity=10,\
    capacityIncrement=1,\
    allowShrinking=true,\
    shrinkPeriodMins=15,\
    testTable=DUAL,\
    refreshMinutes=5,\
    testConnsOnReserve=true,\
    props=user=XXXX;password=XXXXX
    weblogic.allow.reserve.weblogic.jdbc.connectionPool.DBPool_1=guest

  • RCA Connection Pool idle Time-Out takes no effect !

    My question description goes here.
    According to JCA specification, I developed my 'ManagedConnectionImpl' class from the interface 'ManagedConnection'. I realize the 'destroy()' function to send out logout request to the EIS.
    Then I deployed the connector in Sun Java System Application Server, I noticed there are two parameters in Connection Pool part, they are:
    1. Idle Timeout. It said it's the maximum time that a connection can remain idle in the pool. I assume the connection will be removed after the specific time expired and before it's removed it will call the recallable function, 'destroy()', in my concrete class, 'ManagedConnectionImpl'.
    2. Pool Resize Quantity. it said it's number of connections to be removed when pool idle time expired.
    I am weird about it. I think EIS had itself session control strategy, if the specific session time-out expired, it will invalidate this session. So I think we will set 'Idle Timeout' in application server to be shorter than the EIS session time-out. If the 'Idle Timeout' in application server expired, it should remove all connections inside otherwise maybe the connection with invalid session will exist! (the background knowledge is our system will return back soap fault when it meets invalid session, so the invalid connections will not be removed by switching on your configuration item, 'On Any Failure')
    So I set "inital and minimum pool size" to 8, "maximum pool size" to 32 and "Pool Resize Quantity" to 32. (I expect AS to remove all when pool idle time expired)
    After deploying, I send out requests at the first round and wait for the time expired but I can't see the desired logout requests from pool automatically even one. Firstly I guess if my recallable function definition is wrong but when I shut down the Application Server, the desired logout requests are sent out from pool automatically. So I think my recallable function definition is workable.
    What's your comments on it?
    P.S.
    I am using Sun Java System Application Server 8.1.
    Thanks in advance!
    BRs
    /Leo

    I have had following test to ensure I sent out notification to listener.
    [#|2005-08-23T16:14:25.061+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    It's in managed env!|#]
    [#|2005-08-23T16:14:25.062+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    enter matchManagedConnections() !|#]
    [#|2005-08-23T16:14:25.062+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    try to find a matching and existing one, reuse it!|#]
    [#|2005-08-23T16:14:25.062+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    Found a matching and existing one, reuse it!|#]
    [#|2005-08-23T16:14:25.495+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    tearDown() is called, the application-level connection is released!|#]
    [#|2005-08-23T16:14:25.496+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    enter calling close() of managed connection.|#]
    [#|2005-08-23T16:14:25.496+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    Start calling close() of managed connection.|#]
    [#|2005-08-23T16:14:25.496+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    start to notify the listener the completeness of connection.|#]
    [#|2005-08-23T16:14:25.496+0800|INFO|sun-appserver-pe8.1_01|javax.enterprise.system.stream.out|_ThreadID=12;|
    notify the listener the completeness of connection successfully.|#]
    Whether it's related with the initial and minimum number parameter? Although I found it will not be created during AS start-up and will be created at the first request.
    Whether it shall be kept to meet the minimum requirement? I have failed to set it to 0.

  • WL Connection Pool bad behaviour

    My WebLogic server is configurated with two connection pools towards an Oracle
    and a Sql db servers.
    Unfortunately, when a DB server goes down the WebLogic connection pool is not
    refreshed until I RE-START the WebLogic server.
    In particular, it seesms that a db failure causes WebLogic connection pool to
    have bad connections ("connection CLOSED", in jdbc log...) that are not good to
    execute Stored Procedures.
    Have anyone find this problem?
    Could someone recommend me a solution to face to this problem?
    Thank you very much in advance!
    Mauro

    Mauro,
    Could you post text of the exception and the source code where it happens?
    Slava
    Hi Slava,
    yes of course, I tried!
    With TestOnReserve/Release turned ON WebLogic understands that the poolconnections
    are "closed" and when I ask a connection the exception "No ResourcesAvailable"
    is thrown.
    On the contrary, with TestOnReserve turned OFF, WebLogic does not test thepool
    and grants the connection on demand, but the stored procedures (only thestored
    procedures!!??) executed on this connection throw the exception("connection closed").
    >
    I tried also to catch the failure and to refresh the connection poolthrough the
    weblogic.jdbc.JdbcServices (please see the attached file), but the reset()method
    has no effects...
    My configuration is WebLogic6.0 server with Service Pack 2 installed. Maybe that
    the JdbcServices are deprecated in this version.
    Thank you very much!
    Mauro
    "Slava Imeshev" <[email protected]> wrote:
    Hi Mauro,
    Have you turned TestOnReserve on?
    Regards,
    Slava Imeshev
    "Mauro De Santis" <[email protected]> wrote in message
    news:3b2e2557$[email protected]..
    My WebLogic server is configurated with two connection pools towardsan
    Oracle
    and a Sql db servers.
    Unfortunately, when a DB server goes down the WebLogic connection poolis
    not
    refreshed until I RE-START the WebLogic server.
    In particular, it seesms that a db failure causes WebLogic connectionpool
    to
    have bad connections ("connection CLOSED", in jdbc log...) that arenot
    good to
    execute Stored Procedures.
    Have anyone find this problem?
    Could someone recommend me a solution to face to this problem?
    Thank you very much in advance!
    Mauro

  • Doubts concerning External Connection Pool

    A few questions:
    1. How can I set up an external connection pool with toplink? or in another words, assuming that I have successfully configured a connection pool (and a datasource) on my weblogic app-server, how do I configure Toplink to use the same?
    2. I am trying to achieve the above (refer point 1), by defining my custom connector (by extending TOPLink.Public.Sessions.DefaultConnector). The custom connector provides connections using the dataSource.getConnection(). Now, the question is
    - Where will the pooling happen in this case? i.e. Will Toplink use its own connection pool (populate its own connection pool with container managed data source), and issue connections (container managed) from there or will it make use of the container managed pooling (and ask for connections from the container managed pool, as and when required)? The subtle difference being, weblogic will not be able to validate a connection before issue in the former case.
    3. This question is similar to point 2, but talks in terms of a practical example. Assuming that if I am using the custom connector successfully in my code, then if I pull out the network cord and reconnect again, I expect the container to provide me with a valid connection (as weblogic can be configured to perform a validity check on a connection before issuing). I am getting a 'connection reset by peer' error in my application (indicating that either the container fails to provide a valid connection, or toplink does not use the container managed pool effectively). I guess, Toplink still uses its own pool but this time it is pooling container managed dataSources. Since the connections are issued from Toplink and not container, here is no validation/reconnection happening for the connection, before issue. Please comment if I am thinking in the right direction or not. If not, how you can explain the above failure?
    4. My aim is to utilise the container's connection pool, and Toplink's ability to perform the rest of the things (including transactions). Is that possible?

    Vikas,
    TopLink can easily be configured to use the external connection pool of an server. This can be accomplished with API but more commonly using the sessions.xml configuration file for the SessionManager. In the product we ship examples for WLS that make use of data sources configured in the server. The portion of the sessions.XML file in question is:
              <login>
                   <user-name>weblogic</user-name>
                   <password>weblogic</password>
                   <datasource>java:comp/env/jdbc/ejbJTSDataSource</datasource>
                   <non-jts-datasource>java:comp/env/jdbc/ejbNonJTSDataSource</non-jts-datasource>
                   <uses-external-transaction-controller>true</uses-external-transaction-controller>
                   <uses-external-connection-pool>true</uses-external-connection-pool>
              </login>
              <external-transaction-controller-class>oracle.toplink.jts.wls.WebLogicJTSExternalTransactionController</external-transaction-controller-class>
    This sets TopLink up with both data source access to the JTA and non-JTA connection pools. The full example also includes a domain where the data source is configured.
    When TopLink is using the connection pool of the server (external connection pooling) it will not pool its own connections. TopLink will request a connection from the pool each time one is required and release it back when done. This leaves the server responsible for the number of connections available and also for supporting database re-connection.
    Doug

  • How to use JDBC Connection Pools in a standalone application?

    Hi, there,
    I have a question about how to use JDBC Connection Pools in an application. I know well about connection pool itself, but I am not quite sure how to keep the pool management object alive all the time to avoid being destroyed by garbage collection.
    for example, at the website: http://www.developer.com/java/other/article.php/626291, there is a simple connection pool implementation. there are three classes:JDBCConnection, the application's gateway to the database; JDBCConnectionImpl, the real class/object to provide connection; and JDBCPool, the management class to manage connection pool composed by JDBCConnectionImpl. JDBCPool is designed by Singleton pattern to make sure only one instance. supposing there is only one client to use connection for many times, I guess it's ok because this client first needs instantiate JDBCPool and JDBCConnectionImpl and then will hold the reference to JDBCPool all the time. but how about many clients want to use this JDBCPool? supposing client1 finishes using JDBCPool and quits, then JDBCPool will be destroyed by garbage collection since there is no reference to it, also all the connections of JDBCConnectionImpl in this pool will be destroyed too. that means the next client needs recreate pool and connections! so my question is that if there is a way to keep pool management instance alive all the time to provide connection to any client at any time. I guess maybe I can set the pool management class as daemon thread to solve this problem, but I am not quite sure. besides, there is some other problems about daemon thread, for example, how to make sure there is only one daemon instance? how to quit it gracefully? because once the whole application quits, the daemon thread also quits by force. in that case, all the connections in the pool won't get chance to close.
    I know there is another solution by JNDI if we develop servlet application. Tomcat provides an easy way to setup JNDI database pooling source that is available to JSP and Servlet. but how about a standalone application? I mean there is no JNDI service provider. it seems a good solution to combine Commons DBCP with JNID or Apache's Naming (http://jakarta.apache.org/commons/dbcp/index.html). but still, I don't know how to keep pool management instance alive all the time. once we create a JNDI enviroment or naming, if it will save in the memory automatically all the time? or we must implement it as a daemon thread?
    any hint will be great apprieciated!
    Sam

    To my knoledge the pool management instance stays alive as long as the pool is alive. What you have to figure out is how to keep a reference to it if you need to later access it.

  • Has anyone run the connection pooling for mysql & tomcat successfully?

    I'm trying to set up connection pooling. I'm following the how-to page at
    http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html
    But when i test the DBTest/test.jsp file, tomcat displays an error =
    could not load jdbc driver class 'null'(msdos)
    i have placed all the required .jar files in the tomcat lib.
    below is the cofiguration i did to the server.xml file
    <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
    parent-child relationships with each other -->
    <!-- A "Server" is a singleton element that represents the entire JVM,
    which may contain one or more "Service" instances. The Server
    listens for a shutdown command on the indicated port.
    Note: A "Server" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <Server port="8005" shutdown="SHUTDOWN" debug="0">
    <!-- Uncomment these entries to enable JMX MBeans support -->
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
    debug="0"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
    debug="0"/>
    <!-- Global JNDI resources -->
    <GlobalNamingResources>
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <!-- Editable user database that can also be used by
    UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
    <parameter>
    <name>factory</name>
    <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    </parameter>
    <parameter>
    <name>pathname</name>
    <value>conf/tomcat-users.xml</value>
    </parameter>
    </ResourceParams>
    </GlobalNamingResources>
    <!-- A "Service" is a collection of one or more "Connectors" that share
    a single "Container" (and therefore the web applications visible
    within that Container). Normally, that Container is an "Engine",
    but this is not required.
    Note: A "Service" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <!-- Define the Tomcat Stand-Alone Service -->
    <Service name="Tomcat-Standalone">
    <!-- A "Connector" represents an endpoint by which requests are received
    and responses are returned. Each Connector passes requests on to the
    associated "Container" (normally an Engine) for processing.
    By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
    You can also enable an SSL HTTP/1.1 Connector on port 8443 by
    following the instructions below and uncommenting the second Connector
    entry. SSL support requires the following steps (see the SSL Config
    HOWTO in the Tomcat 4.0 documentation bundle for more detailed
    instructions):
    * Download and install JSSE 1.0.2 or later, and put the JAR files
    into "$JAVA_HOME/jre/lib/ext".
    * Execute:
    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
    with a password value of "changeit" for both the certificate and
    the keystore itself.
    By default, DNS lookups are enabled when a web application calls
    request.getRemoteHost(). This can have an adverse impact on
    performance, so you can disable it by setting the
    "enableLookups" attribute to "false". When DNS lookups are disabled,
    request.getRemoteHost() will return the String version of the
    IP address of the remote client.
    -->
    <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8081 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8080" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="100" debug="0" connectionTimeout="20000"
    useURIValidationHack="false" disableUploadTimeout="true" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value
    to -1 -->
    <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8443" minProcessors="5" maxProcessors="75"
    enableLookups="true"
         acceptCount="100" debug="0" scheme="https" secure="true"
    useURIValidationHack="false" disableUploadTimeout="true">
    <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
    clientAuth="false" protocol="TLS" />
    </Connector>
    -->
    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8009" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" connectionTimeout="20000"
    useURIValidationHack="false"
    protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--
    <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
    port="8009" minProcessors="5" maxProcessors="75"
    acceptCount="10" debug="0"/>
    -->
    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
    <!-- See proxy documentation for more information about using this. -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8082" minProcessors="5" maxProcessors="75"
    enableLookups="true" disableUploadTimeout="true"
    acceptCount="100" debug="0" connectionTimeout="20000"
    proxyPort="80" useURIValidationHack="false" />
    -->
    <!-- Define a non-SSL legacy HTTP/1.1 Test Connector on port 8083 -->
    <!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
    port="8083" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" />
    -->
    <!-- Define a non-SSL HTTP/1.0 Test Connector on port 8084 -->
    <!--
    <Connector className="org.apache.catalina.connector.http10.HttpConnector"
    port="8084" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" />
    -->
    <!-- An Engine represents the entry point (within Catalina) that processes
    every request. The Engine implementation for Tomcat stand alone
    analyzes the HTTP headers included with the request, and passes them
    on to the appropriate Host (virtual host). -->
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Standalone" defaultHost="localhost" debug="0">
    <!-- The request dumper valve dumps useful debugging information about
    the request headers and cookies that were received, and the response
    headers and cookies that were sent, for all requests received by
    this instance of Tomcat. If you care only about requests to a
    particular virtual host, or a particular application, nest this
    element inside the corresponding <Host> or <Context> entry instead.
    For a similar mechanism that is portable to all Servlet 2.3
    containers, check out the "RequestDumperFilter" Filter in the
    example application (the source for this filter may be found in
    "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
    Request dumping is disabled by default. Uncomment the following
    element to enable it. -->
    <!--
    <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
    -->
    <!-- Global logger unless overridden at lower levels -->
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="catalina_log." suffix=".txt"
    timestamp="true"/>
    <!-- Because this Realm is here, an instance will be shared globally -->
    <!-- This Realm uses the UserDatabase configured in the global JNDI
    resources under the key "UserDatabase". Any edits
    that are performed against this UserDatabase are immediately
    available for use by the Realm. -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    debug="0" resourceName="UserDatabase"/>
    <!-- Comment out the old realm but leave here for now in case we
    need to go back quickly -->
    <!--
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    -->
    <!-- Replace the above Realm with one of the following to get a Realm
    stored in a database and accessed via JDBC -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost/authority"
    connectionName="test" connectionPassword="test"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="oracle.jdbc.driver.OracleDriver"
    connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
    connectionName="scott" connectionPassword="tiger"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="sun.jdbc.odbc.JdbcOdbcDriver"
    connectionURL="jdbc:odbc:CATALINA"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!-- Define the default virtual host -->
    <Host name="localhost" debug="0" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <Context path="/my-jsp" docBase="c:\JSP-Files" debug="0"
    privileged="true" reloadable="true" />
         <Context path="" docBase="c:\Inetpub\wwwroot" debug="0" privileged="true" />
    <Context path="/sharon" docBase="C:\Tomcat 4.1\webapps\sharon" debug="0" privileged="true" />
    <!-- Normally, users must authenticate themselves to each web app
    individually. Uncomment the following entry if you would like
    a user to be authenticated the first time they encounter a
    resource protected by a security constraint, and then have that
    user identity maintained across all web applications contained
    in this virtual host. -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn"
    debug="0"/>
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <!-- Logger shared by all Contexts related to this virtual host. By
    default (when using FileLogger), log files are created in the "logs"
    directory relative to $CATALINA_HOME. If you wish, you can specify
    a different directory with the "directory" attribute. Specify either a
    relative (to $CATALINA_HOME) or absolute path to the desired
    directory.-->
    <Logger className="org.apache.catalina.logger.FileLogger"
    directory="logs" prefix="localhost_log." suffix=".txt"
         timestamp="true"/>
    <!-- Define properties for each web application. This is only needed
    if you want to set non-default properties, or have web application
    document roots in places other than the virtual host's appBase
    directory. -->
    <!-- Tomcat Root Context -->
    <!--
    <Context path="" docBase="ROOT" debug="0"/>
    -->
    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="0"
    reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_DBTest_log." suffix=".txt"
    timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    <!-- If you wanted the examples app to be able to edit the
    user database, you would uncomment the following entry.
    Of course, you would want to enable security on the
    application as well, so this is not done by default!
    The database object could be accessed like this:
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    UserDatabase database =
    (UserDatabase) envCtx.lookup("userDatabase");
    -->
    <!--
    <ResourceLink name="userDatabase" global="UserDatabase"
    type="org.apache.catalina.UserDatabase"/>
    -->
    <!-- PersistentManager: Uncomment the section below to test Persistent
              Sessions.
    saveOnRestart: If true, all active sessions will be saved
    to the Store when Catalina is shutdown, regardless of
    other settings. All Sessions found in the Store will be
    loaded on startup. Sessions past their expiration are
    ignored in both cases.
    maxActiveSessions: If 0 or greater, having too many active
    sessions will result in some being swapped out. minIdleSwap
    limits this. -1 means unlimited sessions are allowed.
    0 means sessions will almost always be swapped out after
    use - this will be noticeably slow for your users.
    minIdleSwap: Sessions must be idle for at least this long
    (in seconds) before they will be swapped out due to
    maxActiveSessions. This avoids thrashing when the site is
    highly active. -1 or 0 means there is no minimum - sessions
    can be swapped out at any time.
    maxIdleSwap: Sessions will be swapped out if idle for this
    long (in seconds). If minIdleSwap is higher, then it will
    override this. This isn't exact: it is checked periodically.
    -1 means sessions won't be swapped out for this reason,
    although they may be swapped out for maxActiveSessions.
    If set to >= 0, guarantees that all sessions found in the
    Store will be loaded on startup.
    maxIdleBackup: Sessions will be backed up (saved to the Store,
    but left in active memory) if idle for this long (in seconds),
    and all sessions found in the Store will be loaded on startup.
    If set to -1 sessions will not be backed up, 0 means they
    should be backed up shortly after being used.
    To clear sessions from the Store, set maxActiveSessions, maxIdleSwap,
    and minIdleBackup all to -1, saveOnRestart to false, then restart
    Catalina.
    -->
              <!--
    <Manager className="org.apache.catalina.session.PersistentManager"
    debug="0"
    saveOnRestart="true"
    maxActiveSessions="-1"
    minIdleSwap="-1"
    maxIdleSwap="-1"
    maxIdleBackup="-1">
    <Store className="org.apache.catalina.session.FileStore"/>
    </Manager>
              -->
    <Environment name="maxExemptions" type="java.lang.Integer"
    value="15"/>
    <Parameter name="context.param.name" value="context.param.value"
    override="false"/>
    <Resource name="jdbc/EmployeeAppDb" auth="SERVLET"
    type="javax.sql.DataSource"/>
    <Resource name="jdbc/TestDB"
         auth="Container"
         type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/TestDB">
    <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>user</name>
    <value>javauser</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>javadude</value>
    </parameter>
    <!-- Class name for mm.mysql JDBC driver -->
    <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.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/javatest?autoReconnect=true</value>
    </parameter>
    </ResourceParams>
    <Resource name="mail/Session" auth="Container"
    type="javax.mail.Session"/>
    <ResourceParams name="mail/Session">
    <parameter>
    <name>mail.smtp.host</name>
    <value>localhost</value>
    </parameter>
    </ResourceParams>
    <ResourceLink name="linkToGlobalResource"
    global="simpleValue"
    type="java.lang.Integer"/>
    </Context>
    </Host>
    </Engine>
    </Service>
    <!-- The MOD_WEBAPP connector is used to connect Apache 1.3 with Tomcat 4.0
    as its servlet container. Please read the README.txt file coming with
    the WebApp Module distribution on how to build it.
    (Or check out the "jakarta-tomcat-connectors/webapp" CVS repository)
    To configure the Apache side, you must ensure that you have the
    "ServerName" and "Port" directives defined in "httpd.conf". Then,
    lines like these to the bottom of your "httpd.conf" file:
    LoadModule webapp_module libexec/mod_webapp.so
    WebAppConnection warpConnection warp localhost:8008
    WebAppDeploy examples warpConnection /examples/
    The next time you restart Apache (after restarting Tomcat, if needed)
    the connection will be established, and all applications you make
    visible via "WebAppDeploy" directives can be accessed through Apache.
    -->
    <!-- Define an Apache-Connector Service -->
    <!--
    <Service name="Tomcat-Apache">
    <Connector className="org.apache.catalina.connector.warp.WarpConnector"
    port="8008" minProcessors="5" maxProcessors="75"
    enableLookups="true" appBase="webapps"
    acceptCount="10" debug="0"/>
    <Engine className="org.apache.catalina.connector.warp.WarpEngine"
    name="Apache" debug="0">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="apache_log." suffix=".txt"
    timestamp="true"/>
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    </Engine>
    </Service>
    -->
    </Server>
    Pleas4 help!!!

    you have your driver jar in Tomcat\common\lib?
    if so, check your classpath, it could be that.

  • Unable to get the expected results with connection pooling

    Hi All,
    I have been trying to create JDBC connection pooling provided by the Apache Tomcat 4.0 with MySQL 4.0.16-nt at http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html and my configuration is as follows
    server.xml
    <Context path="/DBTest" docBase="DBTest"
    debug="5" reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_DBTest_log." suffix=".txt"
    timestamp="true"/>
    <Resource name="jdbc/TestDB"
    auth="Container"
    type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/TestDB">
    <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>javauser</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>javadude</value>
    </parameter>
    <!-- Class name for mm.mysql JDBC driver -->
    <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.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/javatest?autoReconnect=true</value>
    </parameter>
    </ResourceParams>
    </Context>
    web.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <description>MySQL Test App</description>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/TestDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    test.jsp
    <jsp:useBean id="foo" class="foo.DBTest" scope="page" />
    <html>
    <head>
    <title>DB Test</title>
    </head>
    <body>
    <%
    foo.DBTest tst = new foo.DBTest();
    tst.init();
    %>
    <h2>Results</h2>
    Foo <%= tst.getFoo() %>
    Bar <%= tst.getBar() %>
    </body>
    </html>
    DBTest.java package
    package foo;
    import javax.naming.*;
    import javax.sql.*;
    import java.sql.*;
    public class DBTest {
    String foo = "Not Connected";
    int bar = -1;
    public void init() {
    try{
    Context ctx = new InitialContext();
    if(ctx == null )
    throw new Exception("Boom - No Context");
    DataSource ds =
    (DataSource)ctx.lookup(
    "java:comp/env/jdbc/TestDB");
    if (ds != null) {
    Connection conn = ds.getConnection();
    if(conn != null) {
    foo = "Got Connection "+conn.toString();
    Statement stmt = conn.createStatement();
    ResultSet rst =
    stmt.executeQuery(
    "select id, foo, bar from testdata");
    if(rst.next()) {
    foo=rst.getString(2);
    bar=rst.getInt(3);
    conn.close();
    }catch(Exception e) {
    e.printStackTrace();
    public String getFoo() { return foo; }
    public int getBar() { return bar;}
    Now when I am trying to run this on browser, everything goes fine except it doesn't show the expected results, instead of that it shows following in the browser:-
    Results
    Foo Not Connected
    Bar -1
    Can anybody help me out as to why I am getting such result while everything is right from my side. Is the program unable to connect to the database or it is not supporting the JDBC version that I am using.
    Thanks in advance
    Regards
    Vikas

    Oh, I think this is not the right place to post this message. I have placed the same in other place of this forum. please ignore this post here!!
    MJ, by the way the link that you suggested is not useful to me.
    Thank you

  • Unable to get Results using Connection Pool

    Hi All,
    I have been trying to create JDBC connection pooling provided by the Apache Tomcat 4.0 with MySQL 4.0.16-nt at http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html and my configuration is as follows
    server.xml
    <Context path="/DBTest" docBase="DBTest"
    debug="5" reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_DBTest_log." suffix=".txt"
    timestamp="true"/>
    <Resource name="jdbc/TestDB"
    auth="Container"
    type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/TestDB">
    <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>javauser</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>javadude</value>
    </parameter>
    <!-- Class name for mm.mysql JDBC driver -->
    <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.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/javatest?autoReconnect=true</value>
    </parameter>
    </ResourceParams>
    </Context>
    web.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <description>MySQL Test App</description>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/TestDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    test.jsp
    <jsp:useBean id="foo" class="foo.DBTest" scope="page" />
    <html>
    <head>
    <title>DB Test</title>
    </head>
    <body>
    <%
    foo.DBTest tst = new foo.DBTest();
    tst.init();
    %>
    <h2>Results</h2>
    Foo <%= tst.getFoo() %>
    Bar <%= tst.getBar() %>
    </body>
    </html>
    DBTest.java package
    package foo;
    import javax.naming.*;
    import javax.sql.*;
    import java.sql.*;
    public class DBTest {
    String foo = "Not Connected";
    int bar = -1;
    public void init() {
    try{
    Context ctx = new InitialContext();
    if(ctx == null )
    throw new Exception("Boom - No Context");
    DataSource ds =
    (DataSource)ctx.lookup(
    "java:comp/env/jdbc/TestDB");
    if (ds != null) {
    Connection conn = ds.getConnection();
    if(conn != null) {
    foo = "Got Connection "+conn.toString();
    Statement stmt = conn.createStatement();
    ResultSet rst =
    stmt.executeQuery(
    "select id, foo, bar from testdata");
    if(rst.next()) {
    foo=rst.getString(2);
    bar=rst.getInt(3);
    conn.close();
    }catch(Exception e) {
    e.printStackTrace();
    public String getFoo() { return foo; }
    public int getBar() { return bar;}
    Now when I am trying to run this on browser, everything goes fine except it doesn't show the expected results, instead of that it shows following in the browser:-
    Results
    Foo Not Connected
    Bar -1
    Can anybody help me out as to why I am getting such result while everything is right from my side. Is the program unable to connect to the database or it is not supporting the JDBC version that I am using.
    Thanks in advance
    Regards
    Vikas

    I've seen cases where NOT using the ResourceParams section, and instead using attributes in the Resource section will fix this. Don't know why.
    i.e.
    Instead of using:
    <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.Driver</value>
    </parameter>use the driver attribute of the Resource tag:
    <Resource name="jdbc/TestDB"
    auth="Container"
    type="javax.sql.DataSource"
    driver="org.gjt.mm.mysql.Driver"/>Also note...I don't use the org.gjt.mm.mysql.Driver class (which is in the distribution), I use com.mysql.jdbc.Driver. Any reason you don't? This could be part of it. I don't really know.

  • Can't create connection pool using weblogic 6.1 with Oracle thin driver

    Hi !
    I have tried to create a connection pool from adminconsole. My CLASSPATH setting
    is as follows :
    F:\SOAP\soap-2_2\lib;F:\SOAP\soap-2_2;
    D:\Oracle\Ora81\jdbc\lib\classes12.zip;
    D:\Oracle\Ora81\jdbc\lib\nls_charset12.zip;
    D:\Oracle\Ora81\jdbc\lib\classes111.zip;
    F:\SOAP\soap-2_2\lib\jaf-1.0.1\activation.jar;
    D:\Oracle\Ora8\Apache\Jsdk\src\javax\servlet\http;
    D:\Oracle\Ora81\Apache\Jsdk\src\javax\servlet;
    D:\Oracle\Ora81\lib;
    F:\ant\jakarta-ant1.\bin;
    E:\weblogic\oci\classes;
    E:\weblogic\oci\classes\weblogic\xml\license;
    E:\weblogic\oci\license;
    E:\bea\wlserver6.1\lib;
    E:\PetStoreHome\petstore1.3;
    Following is the configuration.
    #Oracle thin driver Method #2
    weblogic.jdbc.connectionPool.thin=\      
    url=jdbc:oracle:thin:@test:1521:PROJECT,\      
    driver=oracle.jdbc.driver.OracleDriver,\
         initialCapacity=4,\
         maxCapacity=10,\
         capacityIncrement=1,\
         props=user=xxx;password=xxx;server=test
    #Add a TXDataSource for the connection pool:
    weblogic.jdbc.TXDataSource.weblogic.jdbc.jts.thin=thin
    # Add an ACL for the connection pool:
    weblogic.allow.reserve.weblogic.jdbc.connectionPool.thin=everyone
    I did append the file weblogic.properties with the above config. Now when I start
    the Weblogic server I get the following error :
    Starting WebLogic Server ....
    <Nov 29, 2001 2:24:16 PM EST> <Notice> <Management> <Loading configuration file
    .\config\petstore\config.xml ...>
    <Nov 29, 2001 2:24:22 PM EST> <Notice> <WebLogicServer> <Starting WebLogic Admin
    Server "petstoreServer" for domain "petstore">
    <Nov 29, 2001 2:24:26 PM EST> <Notice> <Management> <Starting discovery of Manag
    ed Server... This feature is on by default, you may turn this off by passing -Dw
    eblogic.management.discover=false>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data Source creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.SignOnDB) can't be creat
    ed with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data Source creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.EstoreDB) can't be creat
    ed with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data Source creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.InventoryDB) can't be
    cr
    eated with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data Source creation:
    weblogic.common.ResourceException: DataSource(weblogic.jdbc.jts.thin) can't be
    created with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <Management> <Application Poller not star
    ted for production server.>
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    After the server has booted, your browser should
    automatically launch and point to the WebLogic Server
    Tour running on this server. If your browser fails to
    launch, point your browser to the URL
    "http://burtsun:7001"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <WebLogicServer> <ListenThread listening
    on port 7001>
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <WebLogicServer> <SSLListenThread listeni
    ng on port 7002>
    <Nov 29, 2001 2:24:42 PM EST> <Notice> <WebLogicServer> <Started WebLogic Admin
    Server "petstoreServer" for domain "petstore" running in Production Mode>
    Could anyone please help me ?
    Thanks
    ..Madhuri

    Madhuri wrote:
    >
    Hi Joe !
    I didn't get what you would like to point out. Actully, I am using same config.,
    but not to disclose the info. I gave you @test and username/password xxx/xxx.Ok. Now, assuming your pool looks like what I showed, the issue is probably
    that there are multiple Oracle driver zips around, and your standlaone program
    is using a different, newer, better one than the server. Our weblogic jar files
    include a classes12.zip Oracle thin driver, but there are multiple versions of
    classes12.zip, and the latest from oracle is better than the one we sealed into
    our packaging. Please use jave -verbose to identify exactly which Oracle sip file
    you are using in the successful case, then make sure this zip file comes before
    any weblogic stuff in your weblogic server's classpath, so we'll use the same
    driver. This should work. Edit the script you sue to start weblogic to verify
    the classpath does end up with the oracle driver ahead of all weblogic stuff.
    Joe
    >
    Please let me know.
    Thanks
    .Madhuri
    Joseph Weinstein <[email protected]> wrote:
    Madhuri wrote:
    Hi Joe !
    Here is the sample java code. Please let me know how I can test thisin weblogic
    6.1.
    Thanks
    .MadhuriWell fine! That was easy. Your pool definition didn't have the same URL
    or
    user or password as this code. Try this for your pool definition:
    weblogic.jdbc.connectionPool.thin=\
    url=jdbc:oracle:thin:@adl-gbsdevel:1521:PROJECT,\
    driver=oracle.jdbc.driver.OracleDriver,\
    initialCapacity=10,\
    maxCapacity=10,\
    capacityIncrement=1,\
    testConnsOnReserve=true,\
    testTable=dual,\
    props=user=mkelkar;password=mkelkar
    Let me know,,,
    Joe
    Joseph Weinstein <[email protected]> wrote:
    The key is in the log:
    Could not create pool connection.
    The DBMS driver exception was:
    java.sql.SQLException: invalid arguments in call
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    Now we need to simplify the problem. Please make a simple 15-line
    standalone
    Java program like you'd find with the Oracle driver's examples, with
    no
    weblogic code in the picture. Just make a JDBC connection using Oracle's
    driver, and show me that code. Then I can translate that into a pool
    definition.
    Joe
    Madhuri wrote:
    Hi Joe !
    Thanks for your prompt reply. I tried the way you suggested but
    it
    still it gives
    me the same error. I am attching here the weblogic.log file.
    Thanks again
    ..Madhuri
    Joseph Weinstein <[email protected]> wrote:
    We'd want to see the log during booting, where the pool
    is being created to see why that failed. Try a pool
    definition with no blank lines, no whitespace at the
    end of lines, and no server property. The thin driver
    doesn't like that:
    weblogic.jdbc.connectionPool.thin=\
    url=jdbc:oracle:thin:@test:1521:PROJECT,\
    driver=oracle.jdbc.driver.OracleDriver,\
    initialCapacity=4,\
    maxCapacity=10,\
    capacityIncrement=1,\
    props=user=xxx;password=xxx
    Joe
    Madhuri wrote:
    Hi !
    I have tried to create a connection pool from adminconsole. My
    CLASSPATH
    setting
    is as follows :
    F:\SOAP\soap-2_2\lib;F:\SOAP\soap-2_2;
    D:\Oracle\Ora81\jdbc\lib\classes12.zip;
    D:\Oracle\Ora81\jdbc\lib\nls_charset12.zip;
    D:\Oracle\Ora81\jdbc\lib\classes111.zip;
    F:\SOAP\soap-2_2\lib\jaf-1.0.1\activation.jar;
    D:\Oracle\Ora8\Apache\Jsdk\src\javax\servlet\http;
    D:\Oracle\Ora81\Apache\Jsdk\src\javax\servlet;
    D:\Oracle\Ora81\lib;
    F:\ant\jakarta-ant1.\bin;
    E:\weblogic\oci\classes;
    E:\weblogic\oci\classes\weblogic\xml\license;
    E:\weblogic\oci\license;
    E:\bea\wlserver6.1\lib;
    E:\PetStoreHome\petstore1.3;
    Following is the configuration.
    #Oracle thin driver Method #2
    weblogic.jdbc.connectionPool.thin=\
    url=jdbc:oracle:thin:@test:1521:PROJECT,\
    driver=oracle.jdbc.driver.OracleDriver,\
    initialCapacity=4,\
    maxCapacity=10,\
    capacityIncrement=1,\
    props=user=xxx;password=xxx;server=test
    #Add a TXDataSource for the connection pool:
    weblogic.jdbc.TXDataSource.weblogic.jdbc.jts.thin=thin
    # Add an ACL for the connection pool:
    weblogic.allow.reserve.weblogic.jdbc.connectionPool.thin=everyone
    I did append the file weblogic.properties with the above config.
    Now
    when I start
    the Weblogic server I get the following error :
    Starting WebLogic Server ....
    <Nov 29, 2001 2:24:16 PM EST> <Notice> <Management> <Loading
    configuration
    file
    \config\petstore\config.xml ...>
    <Nov 29, 2001 2:24:22 PM EST> <Notice> <WebLogicServer> <Starting
    WebLogic
    Admin
    Server "petstoreServer" for domain "petstore">
    <Nov 29, 2001 2:24:26 PM EST> <Notice> <Management> <Starting
    discovery
    of Manag
    ed Server... This feature is on by default, you may turn this
    off
    by
    passing -Dw
    eblogic.management.discover=false>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data
    Source
    creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.SignOnDB)
    can't
    be creat
    ed with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data
    Source
    creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.EstoreDB)
    can't
    be creat
    ed with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data
    Source
    creation:
    weblogic.common.ResourceException: DataSource(jdbcthin.InventoryDB)can't be
    cr
    eated with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:35 PM EST> <Error> <JDBC> <Error during Data
    Source
    creation:
    weblogic.common.ResourceException: DataSource(weblogic.jdbc.jts.thin)can't be
    created with non-existent Pool (connection or multi) (thin)>
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <Management> <Application
    Poller
    not star
    ted for production server.>
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    After the server has booted, your browser should
    automatically launch and point to the WebLogic Server
    Tour running on this server. If your browser fails to
    launch, point your browser to the URL
    "http://burtsun:7001"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <WebLogicServer> <ListenThreadlistening
    on port 7001>
    <Nov 29, 2001 2:24:41 PM EST> <Notice> <WebLogicServer> <SSLListenThreadlisteni
    ng on port 7002>
    <Nov 29, 2001 2:24:42 PM EST> <Notice> <WebLogicServer> <Started
    WebLogic
    Admin
    Server "petstoreServer" for domain "petstore" running in ProductionMode>
    Could anyone please help me ?
    Thanks
    ..Madhuri
    Name: weblogic.log
    weblogic.log Type: Text Document (application/x-unknown-content-type-txtfile)
    Encoding: base64
    Name: PrintColumns.java
    PrintColumns.java Type: Visual Cafe File (application/x-unknown-content-type-VisualCafeFile.Document)
    Encoding: base64

  • How can I use the Connection Pool with DB2

    Hi All,
    I am facing the problem with the usage for the Connection Pool.
    I want to use DB2 via JNDI lookup.
    But when starting the Weblogic server, Error occured with the following message.
    <Error> <JDBC> <Cannot startup connection pool "MyJDBCPool" Cannot load driver class : com.ibm.db2.jdbc.app.DB2Driver>
    DB2 and Weblogic are on the same machine.
    In case of the use of remote DB2 database, I also encountered the same error.
    Configurations are as follows.
    <JDBCConnectionPool DriverName="com.ibm.db2.jdbc.app.DB2Driver"
    MaxCapacity="10" Name="MyJDBCPool"
    Password="{3DES}gCGsOfD9M6iwOtgL2v/NpA==" Targets="myserver"
    TestConnectionsOnReserve="false" TestTableName="test" URL="jdbc:db2://localhost:6789/yongjoo"/>
    <SNMPAgent Name="mydomain"/>
    <JDBCDataSource JNDIName="acsdb" Name="acsdb" PoolName="MyJDBCPool" Targets="myserver"/>
    Could you please give some information about this problem? I will appreciate your kindness.

    Hi Joe,
    Thanks your help.
    Perhaps It's my fault for Weblogic console's setting.
    After I reset the target server in console, Error message disappeared.
    But, when I call the TestCode, I encountered another error message. The error
    is NameNotFoundException.
    When lookingup the JNDI name, NameNotFoundException errer occured. I tried to
    change my setting and JNDI name, but the results are the same.
    Would you please give me some information about this one more time? I will be
    appreciated for your help.
    Follows are Config.xml
    <JDBCConnectionPool DriverName="com.ibm.db2.jdbc.app.DB2Driver" MaxCapacity="10"
    Name="MyJDBCPool" Password="{3DES}gCGsOfD9M6iwOtgL2v/NpA==" Targets="myserver"
    TestConnectionsOnReserve="false" TestTableName="test"
    URL="jdbc:db2://localhost:6789/yongjoo"/> <SNMPAgent Name="mydomain"/>
    <JDBCDataSource JNDIName="acsdb" Name="acsdb" PoolName="MyJDBCPool"
    Targets="myserver"/>
    and follows are TestCode,
    url = "t3://localhost:7001"; //default URL
    datasource = "jdbc/acsdb";
    Context ctx = null;
    Hashtable p = new Hashtable();
    p.put(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");
    p.put(Context.PROVIDER_URL, url);
    try{
    ctx = new InitialContext(p);
    System.err.println("initialContext(p)"+ctx); <-- success
    ds = (DataSource)ctx.lookup("java:comp/env/jdbc/acsdb");
    }catch(NameNotFoundException ne){
    throw new ConnectionException(); .
    }catch(NamingException ne){
    throw new ConnectionException();

Maybe you are looking for

  • Installation problem with windows server 2003 64 bit

    I downloaded all hyperion components from e-deleivery for windows server 2003 64 bit when i tried to install it a message said that some component are not compatible when i removed stratigic finance and FDM components the installation started and com

  • Problems with connecting to internet

    maybe i won't have internet for long so i have to make this quick: 1. I use bcm43xx kernel module to connect to internet and this has been going OK(sometimes iv'e had to disconnect and reconnect to still get internet however) nut completely died this

  • Printing Buttons with Images

    In my application, I am attempting to print a document that has both buttons with text and buttons with images, along with plain text. When I print, the buttons with the images are larger than they ought to be (i.e. they don't fit within the area the

  • Target Yield in Material Master

    Is it possible to enter target yield in material master so that we are able to get variance between target yield and actual yield. Pl. help me if any such filed is available in FERT master or any other way. Regards, Ganesh

  • How do I match with an error of 4001?

    I purchased "Match" and have tried several times to get it to run. I keep getting error message of 4001.  Yes, I reinstalled itunes today and still have the same error message.  Any help would be greatly appreciated.  Thank you.