Help using connnection pool in JSP!!
Dear Users,
I am using a JSP - MS Access application which uses Tomcat as the web server and IDS JDBC Driver.
The JSP application uses a Java class called ResourceManager which I have created and handles all the update/search queries on the database. Just to get an idea , these are the first few lines of my ResourceManager class:
public class ResourceManager {
static Connection conn = null;
static String DB_URL = "jdbc:ids://localhost:12/conn?dsn='ttdoverIDS'";
static String DB_USERNAME = "";
static String DB_PASSWORD = "";
static {
try {
Class.forName( "ids.sql.IDSDriver").newInstance();
conn = DriverManager.getConnection(DB_URL, null);
}catch (Exception e) {
e.printStackTrace();
What is happenening is that everytime the user interacts with the database a new connection is created. And that is a probable reason why the application slows down after about 30 mins of extensive use by 8-9 concurrent users.
I want to know how to use connection pooling instead of DriverManager class. Can I modify my ResourceManager class to connect using ConnectionPool instead of DriverManager?
Any help would be appreciated.
m_stan
1) In the Java SDK, there's no such thing as a ConnectionPool class. Maybe you can find one on the net or build your own (it's really not that difficult).
2) MS-Access is not exactly a high-performance, concurrent-access database, so don't expect a lot from it.
3) What kind of computer are you using to run this application? 8 users may be a lot for a small system.
4) Even if you are creating one connection at a time, make sure you are closing every one of them right after executing the query/update. Maybe the DB is clogged with connections left open.
Similar Messages
-
How to use connection pooling in jsp?
I'm new to world of JSP. I'm developing web application using Oracle 8i and JSP to implement it. I'm using jakarta-tomcat server for this purpose.
I'll frequently access the database. so I want to use the connection pooling.
Can anybody explain the simple procedure to use it
thanxHello syyuen,
Please help me, here iam sending u my server.xml , web.xml and servlet
application. I put classes12.jar in tomcat/common/lib. and above servlet
class application under tomcat/webapps/root/web-inf/classes
and this is a simple servlet program for getting connection from the
connection pool of tomcat using tyrex..
my oracle database name is "myuser" and password is "mypass"
either u check my server.xml or tell me where under which tag should i
place <Resource...> tag in server.xml and should i need to modify any
other places..??
server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<!-- Tomcat Stand-Alone Service -->
<Service name="Tomcat-Standalone">
<!-- Non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
<!-- AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
<!-- Top level container in our container hierarchy -->
<Engine name="Standalone" defaultHost="localhost" debug="0">
<!-- 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
<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?user=test;password=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:@oracle:1521:ORCL"
connectionName = "mail"
connectionPassword = "mail"
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="1" appBase="webapps" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<!-- Tomcat Root Context -->
<!-- <Context path="" docBase="ROOT" debug="0"/> -->
<!-- Tomcat Manager Context -->
<Context path="/manager" docBase="manager" debug="0" privileged="true"/>
<!-- MY CONTEXT HERE -->
<Context path="/localhost" docBase="localhost" debug="0" reloadable="false" override="true">
<Resource name="jdbc/myConnection" auth="SERVLET" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myConnection">
<parameter><name>user</name><value>myuser</value></parameter>
<parameter><name>password</name><value>mypass</value></parameter>
<parameter><name>driverClassName</name><value>oracle.jdbc.driver.OracleDriver</value></parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@oracle:1521:ORCL</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>32</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
</ResourceParams>
<!-- END OF MY Context, Oracle username=myuser,password=mypass -->
<!-- i pasted this context from somebody . should i need whole context or resource name in that...???? -->
<!-- Tomcat Examples Context
<Context path="/examples" docBase="examples" debug="0" reloadable="true" crossContext="true">
-->
<!--
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
<Ejb name="ejb/EmplRecord" type="Entity" home="com.wombat.empl.EmployeeRecordHome" remote="com.wombat.empl.EmployeeRecord"/>
<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"/>
<ResourceParams name="jdbc/EmployeeAppDb">
<parameter><name>user</name><value>sa</value></parameter>
<parameter><name>password</name><value></value></parameter>
<parameter><name>driverClassName</name><value>org.hsql.jdbcDriver</value></parameter>
<parameter><name>driverName</name><value>jdbc:HypersonicSQL:database</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>
-->
</Context>
</Host>
</Engine>
</Service>
<!-- 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"/>
<!-- Replace "localhost" with what your Apache "ServerName" is set to -->
<Engine className="org.apache.catalina.connector.warp.WarpEngine"
name="Apache" debug="0">
<!-- Global logger unless overridden at lower levels -->
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="apache_log." suffix=".txt"
timestamp="true"/>
<!-- Because this Realm is here, an instance will be shared globally -->
<Realm className="org.apache.catalina.realm.MemoryRealm" />
</Engine>
</Service>
</Server>
web.xml
<web-app>
<servlet>
<servlet-name>conServlet</servlet-name>
<servlet-class>conServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>conServlet</servlet-name>
<url-pattern> /conServlet </url-pattern>
</servlet-mapping>
<resource-ref>
<description> Resource reference to java.sql.Connection
factory defined in server.xml
</description>
<res-ref-name>jdbc/myConnection</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
servlet application
DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/myConnection");
conn = ds.getConnection();
out.println("conn : " + conn); -
How do i use Connection pool in JSP pages
Hey everyone,
I am using a connection pool in my web application. I am using DbConnectionBroker from Javaexchange.com. It has a class that creates a connection pool available for the servlets. I am trying to figure out that how to use connection pool within the JSP pages if I want to connect to the database. In the servlets i am using DBConnectionBroker pool = (DbConnectionBroker) getServletContext().getAttribute("dbPool") to get database connection. How Can i use this in JSP page to get a db connection.
ThanksIf the reference to the connection pool is already stored as an ServletContex attribute, try:
<jsp:useBean id="dbPool" scope="application" class="com.javaexchange.dbConnectionBroker" />
<%
Connection con = dbPool.getConnection();
%> -
How to use connection pool in jsp/servlet ?
I found I can "lookup" it in either java beans/servlets/JSP using JNDI. why?
what is the best practice to use it in a jsp/servlet web app considering JNDI lookuping expensive?
Thanks!
Bo
Edited by: BobXu on Nov 17, 2008 2:27 PM
Edited by: BobXu on Nov 17, 2008 2:32 PMHuh?
You can lookup a JNDI resource from anywhere in java code you want to. As long as you have a repository set up to search on :-)
Of course whether that resource is available or not is a different matter. If you let the server set up the JNDI resource for you, then you can't run it standalone outside the server without something else setting the same thing up :-)
So its not so much a limitation of beans, but just the environment you run the code in.
Best practice? Don't write sql queries in JSP pages :-)
For the rest you might consider the DAO pattern. Or ignore SQL altogether and let hibernate do the work there for you.
Cheers,
evnafets -
Help using DataTags on Edit JSP Form
I costumized the Edit JSP page using DataTags but I don`t know how to edit the current record.
I have the source code of the first page:
//Kssegtroles.jsp
<%@ page language = "java" errorPage="errorpage.jsp" import = "java.util.*, oracle.jbo.*, javax.naming.*, oracle.jdeveloper.html.*, oracle.jbo.html.databeans.*" contentType="text/html;charset=ISO-8859-1" %>
<%
// make sure the application is registered
oracle.jbo.html.jsp.JSPApplicationRegistry.registerApplicationFromPropertyFile(session , "PrjSegJSP_PkgSeg_PkgSegModule");
%>
<HTML>
<HEAD>
<TITLE>INSTITUTO ECUATORIANO DE SEGURIDAD SOCIAL</TITLE>
<LINK href="estilo/estilo.sty" rel=stylesheet type=text/css>
</HEAD>
<BODY class="clbody" aLink=#800000 bgColor=#ffffff leftMargin=0 link=#808000 text=#000000 topMargin=0 vLink=#c0c0c0>
<jsp:useBean class="oracle.jbo.html.databeans.NavigatorBar" id="tb" scope="request" >
<%
tb.setTargetUrl("KssegtrolesView.jsp");
tb.initialize(application,session, request,response,out,"PrjSegJSP_PkgSeg_PkgSegModule.KssegtrolesView");
String sImageBase = "/webapp/images";
tb.setImageDir(sImageBase);
tb.addButton(tb.NAVIGATE_FINDFORM , "KssegtrolesView_Query.jsp");
tb.addButton(tb.NAVIGATE_BROWSE , "KssegtrolesView_Browse.jsp");
tb.addButton(tb.NAVIGATE_INSERT , "KssegtrolesView_Insert.jsp");
tb.addButton(tb.NAVIGATE_EDIT , "KssegtrolesView_Edit.jsp");
tb.render();
%>
</jsp:useBean>
<br>
<jsp:useBean id="RowViewer" class="oracle.jbo.html.databeans.ViewCurrentRecord" scope="request">
<%
RowViewer.initialize(pageContext, "PrjSegJSP_PkgSeg_PkgSegModule.KssegtrolesView");
RowViewer.setReleaseApplicationResources(true);
RowViewer.render();
%>
</jsp:useBean>
</BODY></HTML>
This is the code for the Edit Page:
//KssegtrolesView_Edit.jsp
<%@ page language = "java" errorPage="errorpage.jsp" import = "java.util.*, oracle.jbo.*, javax.naming.*, oracle.jdeveloper.html.*, oracle.jbo.html.databeans.*" contentType="text/html;charset=ISO-8859-1"%>
<%
// make sure the application is registered
oracle.jbo.html.jsp.JSPApplicationRegistry.registerApplicationFromPropertyFile(session , "PrjSegJSP_PkgSeg_PkgSegModule");
%>
<HTML>
<HEAD>
<TITLE>INSTITUTO ECUATORIANO DE SEGURIDAD SOCIAL</TITLE>
<LINK href="estilo/estilo.sty" rel=stylesheet type=text/css>
</HEAD>
<BODY class="clbody" aLink=#800000 bgColor=#ffffff leftMargin=0 link=#808000 text=#000000 topMargin=0 vLink=#c0c0c0>
<%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
<jbo:ApplicationModule configname="PkgSeg.PkgSegModule.PkgSegModuleLocal" id="PkgSegModule" username="iessuser" password="iess" />
<jbo:DataSource id="dtsRoles" appid="PkgSegModule" viewobject="KssegtrolesView" ></jbo:DataSource>
<jbo:Row id="Row" datasource="dtsRoles" action="Current" ></jbo:Row>
<form name="KssegtrolesView_form" action="KssegtrolesView_SubmitEditForm.jsp">
<table border="0">
<tr>
<td>Codigo de rol</td>
<td>
<jbo:InputText datasource="dtsRoles" dataitem="Codrol"/>
</td>
</tr>
<tr>
<td>Descripcisn del rol</td>
<td>
<jbo:InputText datasource="dtsRoles" dataitem="Desrol"/>
</td>
</tr>
<tr>
<td>Creacisn de Usuario</td>
<td>
<jbo:InputText datasource="dtsRoles" dataitem="Creusuper"/>
</td>
</tr>
</table>
<input name="MyRowKey" type="hidden" value="<jbo:ShowValue datasource="dtsRoles" dataitem="RowKey"/>" />
<br>
<input type="submit" value="Update"/>
<input type="reset" value="Reset"/>
</form>
</BODY>
</HTML>
<jbo:ReleasePageResources releasemode="Stateless" />
When I execute this, I am not in the current record that I edit, it returns me the information of the first record.
Could you help me please?
nullI suppose that your two pages don't use same application module instance. It's the matter of mixing use of DataTags and WebBeans. Search this forum with these search words; "DataTag" and "WebBean".
-
How to use connection pools in jsp
hi
i am new to jsp
i want to connect to database from my jsp
i did it with using java.sql.DriverManager
now how can i modify that with a connection poolSearch the forum. This is answered several times in the past.
-
How to access database from applet using connection pooling.
Hi,
I am using tomcat 4.1, JRE 1.4.2_10, MySQL 5.0, and IE 6.0. I can access the database using connection pooling from JSP without problems. But, if I try to acess from the applet, I get the following exception (related to JNDI.):
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
I know what this acception means, but I don't know how to fix it. I set up connection pooling in my Tomcat 4.1 that talks to MySQL 5.0. As I said, when I access from jsp, JNDI works. But, applet complains. Please help. In my applet, the following code accesses the database:
ArrayList toolTipData =
access.getToolTipData (projectName,interfac);This is the snipet of my Access class:
public ArrayList getToolTipData (String projectName, String interfac) {
System.out.println("In getToolTipData");
ArrayList toolTipData = new ArrayList();
try{
Context ctx = new InitialContext();
if(ctx == null )
throw new Exception("No Context");
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/interfacesDB");
if (ds != null) {
Connection conn = ds.getConnection();
if(conn != null) {
Statement s = conn.createStatement();
//For some reason paramtized queries don't work, so I am forced
//to this in slighly less eficient way.
ResultSet rst = s.executeQuery("select * from interfaces");
while (rst.next()) {
if (rst.getString("Project_Name").equals(projectName) &&
rst.getString("Interface").equals(interfac)) {
System.out.println("getToolTipData: ITG #" + rst.getString("ITG"));
toolTipData.add("ITG #: " + rst.getString("ITG"));
toolTipData.add("SPNE Prime Name: " +
rst.getString("SPNE_Prime_Name"));
toolTipData.add("PD Prime Name: " +
rst.getString("PD_Prime_Name"));
toolTipData.add("IT Prime Name: " +
rst.getString("IT_Prime_Name"));
toolTipData.add("MLC Priority: " +
rst.getString("MLC_Priority"));
toolTipData.add("Gary's Prime: " + rst.getString("Garys_Prime"));
toolTipData.add("QA Prime: " + rst.getString("QA_Prime"));
toolTipData.add("Brief Description: " +
rst.getString("Brief_Description"));
toolTipData.add("Project_Status: " +
rst.getString("Project_Status"));
conn.close();
}catch(Exception e) {
e.printStackTrace();
return toolTipData;
....The jsp runs on the server, whereas the applet runs on the client so
you must package with your applet any jndi implementation specific classes
and
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory" );
props.setProperty("java.naming.provider.url", "url:1099");
Context ctx = new InitialContext(props);
Object ref = ctx.lookup("..."); -
Problem in using connection pool in netbeans
Hi,
I am using Net Beans and Sun java application server and Derby as database.
I have created data connnection and also configure JDBC resources (ie. DataResource and connectionPool).
Now i want to use this connection pool in my class, I have create one DataConnection class and put this code
private javax.sql.DataSource getMyDatabase () throws javax.naming.NamingException {
javax.naming.Context c = new javax.naming.InitialContext();
return (javax.sql.DataSource) c.lookup("java:comp/env/jdbc/myDatabase");
}I got this code by right click and selecting Enterprise Resources->Use Data, But while running i got the exception
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Plz tell me How can we overcome this exception and is there any other way do use connection pool.
Thanks.Thanks bamkin-ov-lesta,
DbConnectionBroker is good for servlet or other java application. If i use this class, it is like i am writing code for connection pool. I am using NetBeans and sun java application server which provide its default connection pool configuration and i want to use that only.
And I am not getting which class name to be set in environment variable under what name in the following exception.
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Help me plz. -
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 -
NextSet, PrevSet not working when using Common Pool
We are using our custom pool in our application, where username, password, URL are passed at runtime. All the JSPs use the same pool.
We have a master-detail JSP done with data web beans and data tags. Master is done with data web beans and detail done with data tags.
First, Last, Prev, Next buttons are working fine. NextSet and PrevSet buttons are not working. We are wondering what could be the reason.
Can someone from JDEV team help us on this issue. We are going to production in 2 weeks. Any help is greatly appreciated.
Thank you in advance.
VirinchiThank you for replying.
In the datawebbean (Master) code we are getting the rowkey as follows:
// if row exists , get the key
if (l_row != null)
sMasterRowKey = l_row.getKey().toStringFormat(true);
In the data tag code (detail in our case), we are first finding the master row:
!-- master datasource --
jbo:DataSource id="DS_M" appid="IISmt_BC.IISmt_BCModule" viewobject="InformationSourcesView_CF_YES" rangesize="-1"
jbo:RefreshDataSource datasource="DS_M"
!-- find the rowkey of the master --
jbo:Row id="RowM" datasource="DS_M" action="Find" rowkey="<%= sMasterRowKey %" /jbo:Row
Please note that we are using same pool for both master (datawebbeans) and detail (datatags).
For the detail, if I put rangesize as "10", its not finding the master rowkey.
Let me know if you need more information. -
Whether or not using connection pooling?
Hi,
This is our configuration of data-sources. I want to make sure that it uses connection pooling. How can i check it?
All the jsp forms works fine but I do not know whether it uses connection pooling. Please help.
<data-source
class="com.evermind.sql.DriverManagerDataSource"
name="OracleDS"
location="jdbc/OracleCoreDS"
xa-location="jdbc/xa/OracleXADS"
ejb-location="jdbc/OracleDS"
connection-driver="oracle.jdbc.driver.OracleDriver"
pooled-location="jdbc/pooled"
username="xxxx"
password="xxxx"
max-connections="50"
min-connections="15"
connection-retry-interval="1"
url="jdbc:oracle:thin:@xxxx.xxx.org:1521:xxxx"
inactivity-timeout="30"
wait-timeout="30"
/>
</data-sources>Kavi -- the datasource is one part of the equation. You look to have correctly configured one to enable connections to be pooled. You are using an emulated datasource.
The other aspect to this is which "location-value" you lookup and use from your code.
If you want to have a pooled connection datasource, given this definition you have, then you need to lookup the value of the "ejb-location" from within your code.
If you do this directly, then it'd look something like:
try
InitialContext ctx = new InitialContext();
DataSource poolDS = (DataSource)ctx.lookup("jdbc/OracleDS");
Connection c = poolDS.getConnection();
catch(NamingException ne}
With the min-pool setting and the emulated datasources, the min-connections are not established at startup time. The connections grow, and once they meet the min setting, they are never allowed to drop below that value.
One way to check for the connections being used is to query the Oracle database data dictionary
logon as system (or a dba priv account) and query the
v$session table with something like
SQL> select username,proc from v$session
USERNAME PROGRAM
SYS ORACLE.EXE
SYS ORACLE.EXE
SYS ORACLE.EXE
SYS ORACLE.EXE
SYS ORACLE.EXE
SYS ORACLE.EXE
SYSTEM sqlplus.exe
FAQAPP JDBC Thin Client
The J2EE Services Guide from the OTN documentation area describes the datasources and their functions in more detail.
cheers
-steve- -
How to use mxml in a jsp file?
I'm trying to use flex in a .jsp file. I followed the
suggestion that I use the Flex 2 Tag library as suggested by this
link:
http://labs.adobe.com/wiki/index.php/Flex_2_Tag_Library_for_JSP#Download_and_Installation
but I couldn't find it. I also downloaded LiveCycle Data Services
ES but couldn't find the flex-bootstrap.jar.
I have a simple example:
<!--<%@ taglib uri="FlexTagLib" prefix="mm" %>-->
Use the <mxml> tag to insert a Flex application in an
existing JSP page. The following example shows the <mxml> tag
with the source attribute to include an external MXML file:
<mm:mxml source="CustomerServiceChat.mxml"/>
Alternatively, you can use the <mxml> tag with inline
MXML source code, as the following example shows:
<mm:mxml>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml"
xmlns="*">
<mx:Text label="Hello World">
</mx:Application>
</mm:mxml>
I also added the following code in my web.xml:
<taglib>
<taglib-uri>FlexTagLib</taglib-uri>
<taglib-location>/WEB-INF/lib/flex-bootstrap.jar</taglib-location>
</taglib>
and obviously I get an error because I don't have the
flex-bootstrap.jar file. Please let me know how this can be
corrected. Thanks in advance!Adobe Newsbot hopes that the following resources helps you.
NewsBot is experimental and any feedback (reply to this post) on
its utility will be appreciated:
Adobe - Developer Center : Flex quick start guide for PHP
developers:
Apr 30, 2007 ... In this example, I changed the result data
type to XML with E4X support by setting .... In Flex you would
download a file using this code:
Link:
http://www.adobe.com/devnet/flex/articles/php_getstarted.html
2d. Tutorial - Flex 3 Getting Started - Adobe Learning
Resources:
See Calling XML Web Services over the Web Using the Web
Service References ... For information on integrating PHP and Flex
using AMF to encode the data,
Link:
http://learn.adobe.com/wiki/display/Flex/2d.+Tutorial
Mike Potter: Flex and PHP - A simple sample:
I have other example with PHP and MySql and give the same
error, and a example .... Flex Data Services... I choose None (???)
because I work with php and
Link:
http://blogs.adobe.com/mikepotter/2006/02/flex_and_php_a_1.html
Adobe - Developer Center : Transmitting data between Flex and
PHP:
Sep 4, 2007 ... Now that the user interface is set up and
ready to go you can add the HTTP services to go ask for the data
from the PHP code. In Flex you
Link:
http://www.adobe.com/devnet/flex/articles/flex_php_json.html
Integrating Adobe Flex and PHP:
Mar 1, 2006 ... The first step is to download Flex Builder
2.0 from the Adobe labs ... For example, you could use this same
PHP script to pass data to a
Link:
http://devzone.zend.com/article/11-Integrating-Adobe-Flex-and-PHP
Disclaimer: This response is generated automatically by the
Adobe NewsBot based on Adobe
Community
Engine. -
How to use switch statement in JSP?
Hi,
I am using switch satement in jsp.
the code as follows:
switch(flag)
case 1: query="select * from cust";
break;
case 2: query="select * from cust where minp="+mini+"and maxp="+maxi;
break;
default: query="";
out.println(query);but, i am getting some number format exception. I don't know where i am going wrong.
Please help
Regards,
AshviniI got the solution
Thanks anyways
Regards,
AShvini -
Using Oracle pooling in 10.2 with ingres datasource
Hi;
I'm trying to use Oracle Pooling in 10.2 using OracleConnectionCacheManager class with ingres database.
I got the following exception:
java.sql.SQLException: Invalid Oracle URL specified
The URL i'm using is:
jdbc:edbc://HOST:TM7/DATABASE
When i'm using the same URL with Class.forname() it's working fine!
I don't know what i'm missing.
Any Help?
Thanks in advance.yes we have a standalone version of 10g being converted to RAC mode..
old version
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
converted to
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
i understand the binaries would be different, but are the libraries different too? -
How to use SSL Technology in JSP.
Can anybody Tell me that How to use SSL Technology in JSP ?
I am using Apache Tomcat 5.0.28 Server.
How to configure the Tomcat server so that it will access any web application supported by Tomcat via SSL ?
Thank you very much in advance.The JSP does not need to know that the request is coming over SSL. If the application must be over SSL, but the server also allows non-SSL communication, then, like I said, you need to build in a Filter that will check if the incoming request is an https or http request and redirect to the https url if the request was http. And you can do that using the method listed in the previous post. As far as setting up the SSL certificate for Tomcat to use, refer to the Tomcat Documentation that comes with the server. Other than those two things, you don't need to know anything else about SSL inorder to run an SSL application through a Tomcat server (or any other enterprise server either, for that matter), but do an internet search for SSL and maybe one or two other keywords that apply to your situation and you should find plenty that will help.
Maybe you are looking for
-
our mac mini server was freezed and try to restart, but the apple logo and the spinning gear keep running. I try un-plugged it but same thing the spinning gear logo keep running.
-
HOW DO I MERGE FILES FROM EMAC TO MACBOOK W/O having 2 logins?
I used transfer manager to move files from old eMac to new MacBook ...now it is like I have two computers....I have to log off from the MACBOOK "side " and log in like I was on my old eBook to get to those files??? At a minimum I want my iPhotos and
-
Hi, Experts I have following problem poll interval is 900 sec in my sender file adapter, but the file adapter is picking up the file 5 times at a time and IS processing them.Like tis it is happening every 900 sec. but i need file adapter to pick up
-
Issue in Print & Print Preview
Hi All, I have a report in which the output is displayed correctly. In output I have process order field AUFNR LIKE AFKO-AUFNR. Then length of field is 12 Chars. Now in the output the data is comming correctly for all th
-
Problem while invoking a Frame initially in a function
Hi friends here is a small problem. Please help me. i invoked a class called ShowComponents, which extends a JFrame in the begining of a function. That class has some components. But until the execution of the function that components are not visible