Doubt in connection pooling
Hi,
I have a doubt in connection pooling.
I we create 100 connections in a connection pool, when do the connections created or assigned? Is it during the login time or during there is a request for the connection?
Please explain the doubt in detail.
Thanks
It depends on connection pool implementation.
Anyway you should not worry about it.
In general some connections created right away and some created after if required. You should be able to configure your pool.
Similar Messages
-
Hi I have a few doubts regarding connection pools..
1) When an instance is in the running state do the connection pools remain open ? When are connection pools closed exactly? only when the instance gets completed/faulted/terminated or in other conditions also
2) Is there anyway to monitor the current total number connection pools open ?
Thanks in advance
Nikhil1)When an instance is in the running state do the connection pools remain open ?
Here we have to talk about the connection, connection pool holds all the connections created to the database.
When the BPEL engine wants to persist any data to the database the connection will be availed from the connection pool and will be return to the connection pool once the commit is completed.
The instance status is not related to the connection status.
2) Is there anyway to monitor the current total number connection pools open ?
You can monitor the connection details-
Login to weblogic console
Services-->DataSources-->Data source name(SOADatasource)-->Monitoring
Customize the table and add the the required columns like Active Connections Current Count.
I hope this will help u...
Regards
Albin I
http://www.albinsblog.com -
PI' RFC Connection pool doubt.
Hi PI exports:
i have a doubt about pi' RFC Connection pool ,pi RFC receive channel can set the conn pool size ,but when start the rfc receiver channel ,is there always only one Connection pool ,or there is only one Connection pool instance?
thinks
Edited by: kevin liang on Oct 19, 2009 6:45 AMHi,
Connection poolins size means how many number of connection you want to make open to send data to ECC, We can define maximum number of connection in Receiver RFC Adapter,Go to additional parameters section and define Max Number of connection give the number there,thats it.Internally it works as Connection poolin mechanism.
Regards,
Raj -
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 -
Some doubts in using resource-ref,connection pool n Data-source
Hi all ,
I need little bit clarification in the following points.
1) Does the connection pool which is created can be displayed in JNDI Tree???
I am seeing only DataSOurce in the JNDI Tree Only.
2)In case of Bean Managed Persistance, in ejb-jar.xml,
I had given the following info.
<resource-ref>
<res-ref-name>ramukkDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>Does the <res-ref-name> refers to Datasource Name??
In weblogic-ejb-jar.xml
<reference-descriptor>
<resource-description>
<res-ref-name>ramukkDataSource</res-ref-name>
<jndi-name>ramukkpool</jndi-name>
</resource-description>
</reference-descriptor>Here <jndi-name> refers to connection pool as per weblogic bible book.
If so when i deployed my ejb into the server iam getting Datasource cant be found.
If i had given like the following,
In ejb-jar.xml
<resource-ref>
<res-ref-name>jdbc/ramuJndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> In weblogic-ejb-jar.xml
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/ramuJndi</res-ref-name>
<jndi-name>jdbc/ramuJndi</jndi-name>
</resource-description>
</reference-descriptor>Then only my ejb code is successfully deploying doing some work which is as per xpectation.
Can any body tell why I have to give the same name for <res-ref-name> n <jndi-name>??
I am working on this problem from last one week. Still not found the solution.
Connection Pool Creation
GENERAL::
Name : ramukkpool
url : jdbc:mysql://localhost:3306/test
Driver Classname: com.mysql.jdbc.Driver
Properties :
user = root
Password = XXX
create
TARGETS::
i had shifted myServer from left side to right side n clicked >>Apply
(Techncially can we say this as deploying the connection pool into server ???????????
If not how to deploy the connection pool into server??)
I did not get any errors in the console.
Now i am creating a datasource
CONFIGURATION:
Name : ramukkDataSource
JNDIName: jdbc/ramuJndi(Does we have to follow this convention only?? i.e JNDIName should start with jdbc/ only)
PoolName: ramukkpool
create
TARGETS::
I had shifed myServer from left to right n >>Apply.
Now also i did not get any errors in the console.Thanx(in advance),
ramuI have read the documentation.
I changed my class to oracle.jdbc.pool.OracleConnectionCacheImpl from
oracle.jdbc.pool.OracleConnectionPoolDataSource
I observed in the EM that the Open JDBC Connections and Total JDBC Connections are the same. When I used oracle.jdbc.pool.OracleConnectionPoolDataSource my Total JDBC Connections was increasing and Open JDBC Connections remains 0.
My question still remains unanswered, could some kindly help.
Q? I have defined a data source in JDeveloper using
oracle.jdbc.pool.OracleConnectionCacheImpl
In my java bean I am using the code pasted below to make a connection to database.
Can some one tell whether I am using the correct method of connection pooling mechanism or do I need to make some changes? This application uses JSP and used by lots of people which hits database very frequently.
Any help is highly appreciable.
Thanks in advance.
*******Code to make connection*********
private javax.naming.InitialContext context = null;
private javax.sql.DataSource jdbcURL = null;
private static final String url = "jdbc/ProdCoreDS";
public boolean openConnection()
try
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
context = new javax.naming.InitialContext();
jdbcURL = (javax.sql.DataSource)context.lookup(url);
con = jdbcURL.getConnection();
return true;
catch(Exception e)
System.out.println("Error in the Connection "+e);
e.printStackTrace();
return false;
}} -
Connection Pool establishment problem
Hi Experts,
we have one application with JCo mechanism. For this application,
we are using one properties file, which holds ABAP connection information. From this connection information(sapconn.props), we created connection pool and fetching data from the back end. Now my requirement is, instead of this properties file, we want to use one SLD, from this i would like to fetch connection information and establish a connection pool. How can we implement this one...?
Is there any API to read the ABAP connection informaation from visual admin (JCo RFC provider) ?
Thanks
mahaYour question has been answered in this [thread|connection establishment doubt;.
Please read the [rules|https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement], in particular - do not cross post.
-- Vladimir -
Weblogic Server 9.2 Crashes when using the JMS Wrapped Connection Pooling.
===== BEGIN DUMP =============================================================
JRockit dump produced after 0 days, 01:05:05 on Thu Sep 16 18:27:36 2010
Additional information is available in:
E:\obopay\servers\EWP_9.2_Domain\jrockit.4516.dump
E:\obopay\servers\EWP_9.2_Domain\jrockit.4516.mdmp
If you see this dump, please open a support case with BEA and
supply as much information as you can on your system setup and
the program you were running. You can also search for solutions
to your problem at http://forums.bea.com in
the forum jrockit.developer.interest.general.
Error Message: Illegal memory access. [54]
Exception Rec: EXCEPTION_ACCESS_VIOLATION (c0000005) at 0x0095065F - memory at 0x00740060 could not be read.
Minidump : Wrote mdmp. Size is 567MB
SafeDllMode : -1
Version : BEA JRockit(R) R27.2.0-131-78843-1.5.0_10-20070320-1457-windows-ia32
GC Mode : Garbage collection optimized for throughput
GC Strategy : Generational Parallel Mark & Sweep
: Current OC phase is: not running. YC is not running.
: GC strategy for GC 36 was genparpar
: GC strategy for GC 37 was genparpar
: GC strategy for GC 38 was genparpar
: GC strategy for GC 39 was genparpar
: GC strategy for GC 40 was genparpar
: mmHeap->data = 0x00C00000, mmHeap->top = 0x10C00000
: The nurserylist starts at 0x01BE75E8 and ends at 0x0CB52440
: mmStartCompaction = 0x00C00000, mmEndCompaction = 0x01C00000
: References are 32-bit.
CPU : Intel Pentium III/Pentium III Xeon SSE SSE2 SSE3 SSSE3 EM64T
Number CPUs : 2
Tot Phys Mem : 3451408384 (3291 MB)
OS version : Microsoft Windows XP version 5.1 Service Pack 3 (Build 2600) (32-bit)
Thread System: Windows Threads
State : JVM is running
Command Line : -Djava.library.path=E:\bea\jrockit90_150_10\bin;E:\bea\jrockit90_150_10\jre\bin;E:\bea\weblogic92\server\native\win\32;E:\bea\weblogic92\server\bin;E:\bea\weblogic92\server\native\win\32\oci920_8 -Dweblogic.management.discover=false -Dplatform.home=E:\bea\weblogic92 -Dwls.home=E:\bea\weblogic92\server -Dwli.home=E:\bea\weblogic92\integration -Dweblogic.Name=myserver -Dweblogic.management.username=weblogic -Dweblogic.management.password=weblogic -Dweblogic.ext.dirs=E:\bea\patch_weblogic901\profiles\default\sys_manifest_classpath\weblogic_patch.jar Djava.security.auth.login.config=E://workspace/Bhopal/LoginModulesConfig/ewp_loginmodules.config -Djava.naming.factory.initial.ewp.remote=weblogic.jndi.WLInitialContextFactory -Dcom.ewp.proxy.is_remote=false -Djava.naming.provider.url.ewp.remote=t3://localhost:7001 -Dweblogic.webservice.verbose=true -Dweblogic.log.Log4jLoggingEnabled=true -Dweblogic.security.SSL.ignoreHostnameVerification=true Xdebug -Xnoagent -Dcom.sun.management.jmxremote -Xms256m -Xmx1024m -Dsun.java.launcher=SUN_STANDARD weblogic.Server
java.home : E:\bea\jrockit90_150_10\jre
JAVA_HOME : <not set>
JAVAOPTIONS: <not set>
PATH : E:\bea\jrockit90_150_10\jre\bin;E:\oracle\product\10.2.0\client_1\bin;C:\Program Files\PC Connectivity Solution\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\TortoiseSVN\bin
C Heap : Good; no memory allocations have failed
StackOverFlow: 0 StackOverFlowErrors have occured
OutOfMemory : 0 OutOfMemoryErrors have occured
Registers (from ThreadContext: 0x4B29E378 / OS context: 0x4B29E764):
eax = 00740060 ecx = 00740060 edx = 45a45ba0 ebx = 08c953b8
esp = 4b29ea30 ebp = 00000000 esi = 4b29ea60 edi = 4b29efb4
es = 00000023 cs = 0000001b ss = 00000023 ds = 00000023
fs = 0000003b gs = 00000000
eip = 0095065f eflags = 00010206
Stack:
(* marks the word pointed to by the stack pointer)
4b29ea30: 00981099* 08c953b8 008ab310 4b29eb34 09e5c308 009810ea
4b29ea48: 4b29ead8 0098ecd2 4b29ea60 4b29ea90 48bd8960 48bd8960
4b29ea60: 00000001 45aa0278 45a45ba0 00000007 00000000 08c953b8
4b29ea78: 08512180 4b29ef60 00000000 09d56368 09d563b0 4b29efb4
Code:
(* marks the word pointed to by the instruction pointer)
0095062c: 5e5f0cc4 c35bc033 01b85e5f 5b000000 ccccccc3 0424448b
00950644: a5f06ca3 ccccc300 cccccccc 04244c8b 01a8018b e0830774
0095065c: 8bc88bfe* 40788301 44408b03 af0f0a75 c0830841 f8e08317
00950674: ccccccc3 cccccccc cccccccc 0424448b 00f4888b 158b0000
Loaded modules:
(* denotes the module causing the exception)
00400000-0040ffff E:\bea\jrockit90_150_10\bin\javaw.exe
7c900000-7c9b1fff C:\WINDOWS\system32\ntdll.dll
7c800000-7c8f5fff C:\WINDOWS\system32\kernel32.dll
7e410000-7e4a0fff C:\WINDOWS\system32\USER32.dll
77f10000-77f58fff C:\WINDOWS\system32\GDI32.dll
77dd0000-77e6afff C:\WINDOWS\system32\ADVAPI32.dll
77e70000-77f02fff C:\WINDOWS\system32\RPCRT4.dll
77fe0000-77ff0fff C:\WINDOWS\system32\Secur32.dll
77c10000-77c67fff C:\WINDOWS\system32\MSVCRT.dll
76390000-763acfff C:\WINDOWS\system32\IMM32.DLL
00820000-00a9cfff *E:\bea\jrockit90_150_10\jre\bin\jrockit\jvm.dll
76b40000-76b6cfff C:\WINDOWS\system32\WINMM.dll
71ab0000-71ac6fff C:\WINDOWS\system32\WS2_32.dll
71aa0000-71aa7fff C:\WINDOWS\system32\WS2HELP.dll
7c340000-7c395fff E:\bea\jrockit90_150_10\bin\MSVCR71.dll
5dac0000-5dac7fff C:\WINDOWS\system32\rdpsnd.dll
76360000-7636ffff C:\WINDOWS\system32\WINSTA.dll
5b860000-5b8b4fff C:\WINDOWS\system32\NETAPI32.dll
76bf0000-76bfafff C:\WINDOWS\system32\PSAPI.DLL
6d700000-6d70bfff E:\bea\jrockit90_150_10\jre\bin\verify.dll
6d370000-6d38cfff E:\bea\jrockit90_150_10\jre\bin\java.dll
6d2f0000-6d2f7fff E:\bea\jrockit90_150_10\jre\bin\hpi.dll
6d720000-6d72efff E:\bea\jrockit90_150_10\jre\bin\zip.dll
6d520000-6d527fff E:\bea\jrockit90_150_10\jre\bin\management.dll
6d530000-6d542fff E:\bea\jrockit90_150_10\jre\bin\net.dll
71a50000-71a8efff C:\WINDOWS\system32\mswsock.dll
662b0000-66307fff C:\WINDOWS\system32\hnetcfg.dll
71a90000-71a97fff C:\WINDOWS\System32\wshtcpip.dll
41c00000-41c26fff C:\WINDOWS\system32\DNSAPI.dll
41c30000-41c37fff C:\WINDOWS\System32\winrnr.dll
41c40000-41c6bfff C:\WINDOWS\system32\WLDAP32.dll
41c80000-41c85fff C:\WINDOWS\system32\rasadhlp.dll
68000000-68035fff C:\WINDOWS\system32\rsaenh.dll
769c0000-76a73fff C:\WINDOWS\system32\USERENV.dll
438b0000-438b8fff E:\bea\jrockit90_150_10\jre\bin\nio.dll
41ba0000-41ba9fff E:\bea\jrockit90_150_10\jre\bin\jmapi.dll
41bb0000-41bbdfff E:\bea\weblogic92\server\native\win\32\wlfileio2.dll
43ce0000-43cf8fff C:\WINDOWS\system32\iphlpapi.dll
43d10000-43d27fff C:\WINDOWS\system32\MPRAPI.dll
77cc0000-77cf1fff C:\WINDOWS\system32\ACTIVEDS.dll
43d30000-43d54fff C:\WINDOWS\system32\adsldpc.dll
43d60000-43d70fff C:\WINDOWS\system32\ATL.DLL
43d80000-43ebcfff C:\WINDOWS\system32\ole32.dll
43ec0000-43f4afff C:\WINDOWS\system32\OLEAUT32.dll
43f50000-43f5dfff C:\WINDOWS\system32\rtutils.dll
71bf0000-71c02fff C:\WINDOWS\system32\SAMLIB.dll
43f60000-44052fff C:\WINDOWS\system32\SETUPAPI.dll
44060000-44064fff E:\bea\weblogic92\server\native\win\32\wlntio.dll
44540000-44545fff E:\bea\jrockit90_150_10\jre\bin\rmi.dll
4d010000-4d122fff E:\bea\jrockit90_150_10\jre\bin\dbghelp.dll
"[STANDBY] ExecuteThread: '21' f" id=87 idx=0xf0 tid=4208 lastJavaFrame=0x4B29EB4C
Stack 0: start=0x4B260000, end=0x4B2A0000, guards=0x4B263000 (ok), forbidden=0x4B261000
Thread Stack Trace:
at _mmGetPossibleMovedObjectSize+15()@0x0095065F
at _refIterInit+393()@0x00981099
at _refIterInit+474()@0x009810EA
at _trProcessLocksForThread+66()@0x0098ECD2
at _javalockCouldBeLock+1047()@0x008AB417
at _javalockConvertThinToFat+42()@0x008AC13A
at RJNIjrockit_vm_Locks_convertThinLockedToFatLocked@8+15()@0x00986B1F
-- Java stack --
at jrockit/vm/Locks.convertThinLockedToFatLocked(Ljava/lang/Object;)V(Native Method)
at jrockit/vm/Locks.createMonitorAndConvert(Ljava/lang/Object;Z)Ljrockit/vm/ObjectMonitor;(Unknown Source)
at java/lang/Object.wait(J)V(Native Method)
at java/lang/Object.wait(Object.java:474)
at weblogic/common/CompletionRequest.getResult(CompletionRequest.java:109)
^-- Holding lock: weblogic/common/CompletionRequest@0x09E5C2A8[thin lock]
at weblogic/store/gxa/internal/GXATransactionImpl.commitStoreIO(GXATransactionImpl.java:99)
at weblogic/store/gxa/internal/GXATransactionImpl.doOperationCallbacks(GXATransactionImpl.java:215)
at weblogic/store/gxa/internal/GXAResourceImpl.commit(GXAResourceImpl.java:1448)
at weblogic/transaction/internal/XAServerResourceInfo.commit(XAServerResourceInfo.java:1333)
at weblogic/transaction/internal/XAServerResourceInfo.commit(XAServerResourceInfo.java:577)
at weblogic/transaction/internal/ServerSCInfo.startCommit(ServerSCInfo.java:514)
at weblogic/transaction/internal/ServerTransactionImpl.localCommit(ServerTransactionImpl.java:1993)
at weblogic/transaction/internal/ServerTransactionImpl.globalRetryCommit(ServerTransactionImpl.java:2658)
at weblogic/transaction/internal/ServerTransactionImpl.globalCommit(ServerTransactionImpl.java:2580)
at weblogic/transaction/internal/ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:278)
at weblogic/transaction/internal/ServerTransactionImpl.commit(ServerTransactionImpl.java:227)
at weblogic/deployment/jms/WrappedTransactionalSession.delistFromTransaction(WrappedTransactionalSession.java:258)
^-- Holding lock: weblogic/deployment/jms/PooledSession_weblogic_jms_client_JMSXASession@0x09D56368[thin lock]
at weblogic/deployment/jms/WrappedMessageProducer.send(WrappedMessageProducer.java:149)
at com/obopay/jms/helper/BaseQueueHelper.sendMessage(BaseQueueHelper.java:107)
The above is the jrockit crash dump file..
I am using the JMS Wrapper Connection Poooling provided by Weblogic. When i use Jmeter and do the load testing for around 10 users, the server gets crashed.
I doubt something is going wrong with the Weblogic JMS Connection Pooling, please help me..The problem doesn't look like it has anything to do with wappers per se. The stack indicates that the JVM died when the persistent store tried to invoke a standard Java synchronize operation. JVM crashes need to be analyzed by a JVM expert, so I second the suggestion to solicit help from JVM experts and/or filing a case with customer support. In the mean-time, you can probably work-around the issue by either (A) ensuring you have a recent version of the JVM installed, or (B) temporarily switching to the Sun JVM.
Regards,
tom
Edited by: TomB on Sep 17, 2010 2:33 PM -
Questions regarding Connection Pooling
Hi
i have some confusion regarding how connection pooling is implemented..i have been doing some digging in to this lately but the more i read the more confused i get. i have some doubts here, will any of the posters here kindly clear them
a. Do i have to connect to my database via the DataSource method to take advantage of the connection pooling provided by my app server?..i have read conflicting information about this suggesting that Connection Pooling will not be provided to my app if i use DriverManager.getConnection()
b. if i chose to use the DataSource method do i have to implement the ConnectionPoolDataSource interface to provide the connection pooling for my app?
c. what is the best way to implement my own custom Connection pool?
ThanxDriverManager.getConnection() literally creates, that is, builds a connection to the database using the values you previously supplied when you loaded the driver.
A connection pool is an object that contains several already made connections to the database, and simply provides you with one of those existing connections. The confusion arises because a) the method name is frequently the same and b) the connection pool object calls the driver's getConnection() method to create several connections before lending any of them out.
In other words:
DriverManager.getConnection() builds a connection to the database.
ConnectionPool.getConnection() fetches an existing connection.
So, to answer your questions...
A. This is correct. If you use DriverManager.getConnection(), you are indeed bypassing the Connection Pool entirely.
B. I'm not familiar with DataSource specifically, but in general, a third party connection pool will either give you the interface (and you implement the details) or they will give you the class file containing the DataSource object. All you would have to do in the latter case is to import that file, then create a new instance of it using the new keyword ( DataSource foo = new DataSource(); ). I suspect DataSource is indeed the class file.
C. Creating a connection pool is trivial and there are many examples of it - search on this forum or check out your favorite Java/JDBC programming book. Usually, the question "Should I use a connection pool and why?" is a more important question. -
Repost-Best way of using connection pooling
I am reposting this, seems best suitable in this category.
I am using Eclipse 3.1 along with Tomcat 5.0, MySQL 4.1, J2EE1.4. I could set up the JNDI Dataresource connection pooling and tested with small test servlet. Now thinking of having common methods for getting connection / closing / commiting ....etc.
I wrote following. [Please let me know whether it is correct way of doing it - as i am not very sure]
package common;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import org.apache.log4j.Logger;
public final class connectionManager {
private static Logger logger = Logger.getLogger(common.connectionManager.class);
public connectionManager() {}
public static Connection getConn () throws NamingException, SQLException
//JNDI DataSource connection pooling
Connection conn = null;
try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/TQ3DB");
conn = ds.getConnection();
}catch (NamingException ne) {
new GlobalExceptionHandler(logger, ne);
conn = null;
throw new NamingException();
}catch (SQLException e){
new GlobalExceptionHandler(logger, e);
conn = null;
throw new SQLException();
return conn;
}//getConnection
public static void commit(Connection conn) throws SQLException
conn.commit();
public static void rollback(Connection conn) throws SQLException
conn.rollback();
public static void setAutoCommit(Connection conn, boolean autoCommit)
throws SQLException
conn.setAutoCommit(autoCommit );
public static void closeConnection(Connection conn) throws SQLException{
if (conn != null) {
conn.close();
conn = null;
}//closeConnection
public static void closeResources(ResultSet oRS, PreparedStatement pstmt) throws SQLException
if (oRS != null) {
oRS.close();
oRS = null;
if (pstmt != null) {
pstmt.close();
pstmt = null;
} // closeResources
}//ConnectionManager
I am having a login form which submits user name and password. I am checking this against the database. Following is the servlet to do that.
package login;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import common.*;
public class loginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}//doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
String userId = request.getParameter("userId");
String password = request.getParameter("password");
** call a method to validate the password which will return the
** User Name for authorized users and null string for un-authorised.
String uName = validateUser(userId, password);
//if uName is null .. user is not authorized.
if (uName == null){
//redirect to jsp page with error message
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/jsps/mainmenu.jsp");
if (rd != null){
rd.forward(request,response);
else{
// the user is valid - create a seesion for this user.
HttpSession userSession = request.getSession(true);
// put the user name session variable.
userSession.setAttribute("userName", uName);
//redirect to Main menu page
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/jsps/mainmenu.jsp");
if (rd != null){
rd.forward(request,response);
}// end of doPost
private String validateUser(String userId, String password)
throws SQLException{
String returnVal = null;
connectionManager cm = new connectionManager();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet oRS = null;
try{
//get the connection
conn = cm.getConn ();
//get records from user table for this user id and password
String sQry = "SELECT user_login FROM user "
+ "where user_login = ? AND user_pwd = ? ";
pstmt = conn.prepareStatement(sQry);
pstmt.setString(1, userId);
pstmt.setString(2, password);
oRS = pstmt.executeQuery();
//check for record
if (oRS.next()) {
returnVal = oRS.getString("user_login");
}else {returnVal = null;}
}catch (Exception e){
returnVal = null;
}finally{
cm.closeResources(oRS, pstmt);
cm.closeConnection(conn);
return returnVal;
}// end of servlet class
But i am unable to compile it and i am also getting lots of warnings.
I am getting error at line
1)String uName = validateUser(userId, password);
Unhandled exception type SQLException loginServlet.java TQ3/WEB-INF/src/login line
Following warnings:
2)For loginServlet Declaration
The serializable class DBTest does not declare a static final serialVersionUID field of type long loginServlet.java
3)The static method getConn() from the type connectionManager should be accessed in a static way
4)The static method closeResources(ResultSet, PreparedStatement) from the type connectionManager should be accessed in a static way
5)The static method closeConnection(Connection) from the type connectionManager should be accessed in a static way
Definitely I am doing it wrong but exactly where? I am having very strong doubt the way i am using connections is not the correct way. Pls help me.
regards
ManishaI am in a search of best way to use connection pooling. Initially was using simple JDBC call, then modified to JNDI, afterwards tried to have common class. Later came accross the idea of Singleton/Static. I wanted to have a common class which will handle all connection related issues and at the same time give good performance.
With due respect to all Java Gurus: i got all from web articles/tutorials/java forum etc. There is a long discussion regarding Singlet vs static in this forum. But finally got confused and could not figure out in my case which method shall i make use of, so tried both.
What I want is somebody pointing out flwas inside my 2 code snippets and guide me about which method shall i adopt in future.
Static way:
package common;
import java.sql.Connection;
import javax.sql.DataSource;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public final class ConnectionManager_Static {
private static InitialContext ctx = null;
private static DataSource ds = null;
public ConnectionManager_Static(){ }
//as the staic method is updating static var i am synchonizing it
private static synchronized void getDatasource () throws NamingException, SQLException
if (ds == null){
ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MySql");
//making getConnection() also static as it is not instance specific
public static Connection getConnection () throws NamingException, SQLException, Exception
Connection conn = null;
try{
if (ds == null) {getDatasource ();}
if (ds != null) {
conn = ds.getConnection();
}catch (Exception e){
throw new Exception("From ConnectionManager_Static",e);
return conn;
}//getConnection
}Singleton:
package common;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public final class ConnectionManager_Singleton {
private static ConnectionManager_Singleton INSTANCE = null;
private DataSource datasource = null;
// Private constructor for singleton pattern
private ConnectionManager_Singleton() throws NamingException{
Context ctx = new InitialContext();
datasource = (DataSource)ctx.lookup("java:comp/env/jdbc/MySql");
//synchronized creator for multi-threading issues
//another if check to avoid multiple instantiation
private synchronized static void createInstance() throws NamingException{
if (INSTANCE == null) {
INSTANCE = new ConnectionManager_Singleton();
public static ConnectionManager_Singleton getInstance() throws NamingException {
if (INSTANCE == null) createInstance();
return INSTANCE;
public Connection getConnection() throws Exception
Connection con = null;
try{
con = datasource.getConnection();
}catch(Exception e){
throw new Exception("From connection manager singleton ", e);
return con;
}Sorry, It's becoming long.
Thanaks in advance,
Manisha -
Subject areas and connection pools
Hi,
Could you let me know what is the best option for me. We have tables coming from single data source. We are doing diffferent subject areas based on the requirements. My question is is it best to do different connection pools for each subject area or just do one connection pool for all subject areas.Hi friend,
i think the best option depends on number of user will use the application. If you a have a high number of user on each subject data, i think it will be better have a connection pool per subject area, because the connection pool have a maximum number of concurrent connection. On the other hand, if you have a few number of user, one connection pool will be enough.
For futher information, take a look to next link:
http://www.appsbi.com/obiee-connection-pool
I hope this solve your doubt.
Regards. -
Jdbc connection pool ping error in sun application server
hi,
i have done the appropriate settings for my connection pool
and i have got ping succeded................but it is only for sometimes.
while pinging with the same set of data during another time i have got different errors..........
they are the following:
Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: The transaction isolation could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels
Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: Connection could not be allocated because: Io exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI
=4))))
so i have doubted about my oracle server..........
plz tell me how to start the oracle database server and the oracle net listener............
i would really appreciate anybody for helping me in this problem........hi,
i have done the appropriate settings for my connection pool
and i have got ping succeded................but it is only for sometimes.
while pinging with the same set of data during another time i have got different errors..........
they are the following:
Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: The transaction isolation could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels
Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: Connection could not be allocated because: Io exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI
=4))))
so i have doubted about my oracle server..........
plz tell me how to start the oracle database server and the oracle net listener............
i would really appreciate anybody for helping me in this problem........ -
Jdbc-odbc-bridge connection pool
I got a problem with odbc connection pool in my Sun App Server 7.
When i try to connect to the odbc database (msaccess or conzept16), i got a SQLException : com.sun.enterprise.repository.J2EEResourceException
java.lang.NoSuchMethodException: setdatabaseName .....
It seems that i cant set any propertys like url, user or password. The exception throws every time NoSuchMethodException: setURL or ... NoSuchMethodException: setUser
I tried this with pointbase database and pointbase drivers and there was no problem. Also when i connect direct from jsp page to the odbc database without connection pool it works.
How can i set a propper connection pool with the jdbc-odbc-bridge? Please Help. There is no jdbc driver for that database available.
Is that right using sun.jdbc.odbc.JdbcOdbcDriver for that?
here my server.xml
<resources>
<jdbc-resource enabled="true" pool-name="access-pool" jndi-name="jdbc/AccessDB"/>
<jdbc-connection-pool steady-pool-size="2" max-pool-size="6" max-wait-time-in-millis="60000" pool-resize-quantity="2" idle-timeout-in-seconds="300" is-isolation-level-guaranteed="false" is-connection-validation-required="false" connection-validation-method="auto-commit" fail-all-connections="false" datasource-classname="sun.jdbc.odbc.JdbcOdbcDriver" name="access-pool" validation-table-name="TAB_NAME">
<property value="jdbc:odbc:testdb" name="databaseName"/>
</jdbc-connection-pool>
</resources>AFAIK the bridge driver does not support multipleopen
connections (which is what connection pooling
requires).Wrong.
It might be the case that the bridge AND ms access
does not support that but I seriously doubt that as
well.
Yesterday I didn't want to test this. Today I did.
So I can state that it is completely wrong.
There might be some other reason preventing the usage in a pool, but it isn't the number of open connections. -
Monitoring EJB,Connection Pool,Servlets
Hi,
i have one doubt does oracle provides any MBeans to monitor ejb,connection pools etc..?
thanks ®ards
Magesh.NHi,
i have one doubt does oracle9ias provides any MBeans to monitor ejb,connection pools etc..?
thanks .ards
Magesh.N -
Javamail performance and connection pooling
Dear Javamail users and programmers,
I am new to javamail. We are working on a commercial web mail project and using Javamail to connect with an IMAP/SMTP clustered server group to read and write mails.
Our application will have 400000 concurrent users in the system and an Approximate , we will have 200 servers (Glassfish 3 ) and each server will have 2000 active users at time.
Now my problem! At the moment, we are opening the store each time we read or store mails for each user. I doubt this will have performance issues in production.
Does anyone have experience using Javamail in this dimension?
I read the connection pooling mechanism in the package com.sun.mail.imap Descriptio. If i understood correctly, this will require at-least one dedicated connection per user to the server . I think, that will be too many connections at a time for any Imap server cluster system.
Is there any other method of doing connection pooling?
Btw in which scenario I should increase the mail.imap.connectionpoolsize to more than one? I assume, i only need to increase this parameter if i want to keep more than one folder open for a particular user at time, isn't it?
What will be the best approach which suite to our application?
Thank you very much for any help.
With regards,
Alvin AntonyConnection pooling isn't likely to help in your scenario. IMAP connection pooling does not allow multiple
users to use the same connection to the server. Unless you want to map all of your web mail users to a
single IMAP user, connection pooling won't help you.
The general issue of managing sessions and connections was discussed briefly in this other thread:
[http://forums.sun.com/thread.jspa?threadID=5423307|http://forums.sun.com/thread.jspa?threadID=5423307]
I suspect you're going to need to do some experiments to determine the best approach. -
Low Application Performance due to AM connection pooling configuration
Hi All,
My application performance is too slow due to default App module connection pooling parameters. I started exploring on these parameters in oracle documentation and was stopped due to some doubts.
The below link is actually the one from which I'm doing the configuration.
http://docs.oracle.com/cd/E21764_01/web.1111/b31974/bcampool.htm
1. I want to know what value should be in Weblogic server --> Maximum capacity (I think they confused me a little saying it can be equal to AM's Maximum Pool Size, Maximum Available Size, Minimum Available Size).
2. Then the AM's Initial pool size should be equal to the weblogic's Initial Capacity. I have 10 AM, if I'm setting 100 in each AM, then the corresponding weblogic's initial capacity should be equal to 100 or 100 X 10. Please clarify this.
Thanks.You post give no information which connects the pooling parameter to 'low' performance. Have you checked where all the time is consumed? Which method or part of the application consumes the most time. Before you can't answer these questions you can't link the problem to am pooling.
Here are some pointers
http://andrejusb.blogspot.de/2011/10/experimenting-with-adf-bc-application.html
http://andrejusb.blogspot.de/2012/01/adf-performance-marathon-22-hours.html
and there are some more articles available on Andrejus's blog...
Timo
Maybe you are looking for
-
In my Ical i have multiple google calendars, from multiple accounts. I've got one calendar for my girlfriend (a Home account), so she can see my schedule and where i am. That brings a minor problem. In my Ical i have the same event now multiple times
-
RFSG 5673 streaming with script
Hi All, I'm trying to build ARB baseband data on my PC, a rack mount controller in this case, then transmit as quickly as possible with the 5673 (VSG) for real time transmission in a TDD. The best solution I've found is the following, but it doesn't
-
Af:query not fetching records when VC Modified for advance search
Gurus, I have a view criteria and using it i have a af:query component in my page. When i run the page i see the fields in the search box correctly. However i see another LOV in the search which has options like "Equals","Between", "Does not contain"
-
Project is all messed up!!!!!
Hello , I really need your help guys. I spent many, many hours on an animation project and suddenly, when I opened it this morning, all the animation was messed up: the limbs of my character are all over the screen and all the work I did is now lost.
-
CS4 Installation on OS X?
Will Master Collection CS4 (specifically the Acrobat Pro software) install OK on a new MacBook Air? Also, does my license allow me to install on two computers (both are mine).