Servlet and Interface
Hi,
Why would I have to instantiate a object for interface to access and execute it's method from Servlet?
For ex: Servlet A refers to Interface B which has method bb. The implementation class is C.
Inside Serverlet A, if I refer to (refer to below line..)
B b;
int z = b.bb(); //as the method bb returns integer value.
The Tomcat application server throws, NullPointerException for accessing b.bb. I realized that, bb method was not accessable for servlet A.
Now I tried to initialize the implementation class C (both B b= new C() and also I tried C c= new C()) and then access the bb method i.e. int z = b.bb() OR int z = c.bb().
Then the servlet runs without any problem. I was expecting that, there is no need to expose and initialize implementation class to any other application/class.
Does anyone have any idea?
TIA,
Tom
In the first case the reference 'b' is not pointing to any object. So invoking method on it throws null pointer exception. In the second case, since you have b pointing to an object(here of type C which implements B)
you have an implementation (non-null ref) and so you can invoke methods without NPE.
The bottom line is: Invoking instance methods on null references causes NullPointerException. And since you cannot instantiate an interface directly - you have to invoke the method on an object of a class that implements the interface.
Similar Messages
-
Diff b/w msg mapping and interface mapping
hi
i have some doubt's:
1. diff b/w msg mapping and interface mapping
2. What is product in SLD? usually who creates the product,technical,business system??
thx in advance..hI Smartsoft General User ,
The following r excellent websites on mapping which differentiate msg mapping and interface mapping in detail:
Excellent PDF Document on Mapping
http://help.sap.com/bp_bpmv130/Documentation/Operation/MappingXI30.pdf
Mapping Development with the ABAP Workbench
http://help.sap.com/saphelp_nw04/helpdata/en/10/5abb2d9df242f6a62e22e027a6c382/content.htm
ABAP Mappings
http://help.sap.com/saphelp_nw04/helpdata/en/ba/e18b1a0fc14f1faf884ae50cece51b/content.htm
how to create a flat file out of an IDoc-XML by means of an ABAP mapping program and the J2EE File Adapter.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/46759682-0401-0010-1791-bd1972bc0b8a
How to Use ABAP Mapping in XI 3.0
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e3ead790-0201-0010-64bb-9e4d67a466b4
These r excellent websites in SLD:
How To Handle the SLD for SAP XI
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9e76e511-0d01-0010-5c9d-9f768d644808
How To Handle Caches in SAP XI 3.0
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1a69ea11-0d01-0010-fa80-b47a79301290
http://www.sap-press.de/download/dateien/751/sap_press_exchange_infra_engl.pdf
cheers!
gyanaraj
****Pls reward points if u find this helpful -
I have a named workspace which is created at startup of the server
within a starup class.
When the startup method is called, I instantiate and put an object
called FooObject in the workspace.
Then, in a servlet, called Dispatcher, in the service method, I
retrieved my named workspace and the object
FooObject which is in this workspace. At this time, I have a
ClassCastException.
To give you more details about my configuration, here is my directory
configuration:
weblogic
|----------- serverclasses
|------------- startupObject
|------------- FooObject
|----------- servletclasses
|------------- myServlet
|------------- FooObject (which is exactly
the same of the serverclasses one)
Do you have any ideas ? The idea is to instantiate a given object at the
startup of the web server and to retrieve
these objects within servlets and JSPs.
Regards.
Alexandre Aubry
Consultant
Fi System, The Web Agency
http://www.fisystem.fr
mailto:[email protected]
Phone: +33 1 55 04 03 03 Fax: +33 1 55 04 03 04
Do you have Service Pack 6. SP6 is supposed to fix this problem
"Jon Armstrong" <[email protected]> wrote in message
news:[email protected]...
> Mark/All,
>
> As a recent member of the list, this is the only reference/post that
seemed that
> it might be related to the problem I'm seeing.
>
> I have a servlet that runs fine if I register it through the standard WLS
httpd
> servlet mechanism:
>
> weblogic.httpd.register.XE=appl.X.EServlet
> weblogic.httpd.servlet.classpath=\
> /weblogic/myserver/public_html/XE/myclasses.jar;\
> ... etc.
>
> If I attempt to deploy the servlet as a WebApp:
>
> weblogic.httpd.webApp.XE=/C:/XE
>
> Where: C:/XE contains
>
> WEB-INF/web.xml
> WEB-INF/lib/myclasses.jar (contains: appl.X.EServlet)
> WEB-INF/lib/...
> ...etc.
>
> I get the following ClassCast Exception when invoking the servlet:
>
> Fri Nov 10 15:14:08 EST 2000:<E> <ServletContext-XE> Error casting
servlet:
> appl.X.EServlet java.lang.ClassCastException: appl.X.EServlet
> at
>
weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java
:382)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.ja
va:349)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.jav
a:338)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:16
4)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:99)
>
> at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:742)
>
> at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:686)
>
> at
>
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
Manager.java:247)
>
> at
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:361)
> at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
> Fri Nov 10 15:14:08 EST 2000:<E> <ServletContext-XE> Servlet failed with
> Exception
> javax.servlet.ServletException: Servlet class: appl.X.EServlet does not
> implement javax.servlet.Servlet
> at
>
weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java
:385)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.ja
va:349)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.jav
a:338)
>
> at
>
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:16
4)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:99)
>
> at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:742)
>
> at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:686)
>
> at
>
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
Manager.java:247)
>
> at
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:361)
> at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
> This class doesn't <implement> Servlet. It <extends> a class which
eventually
> <extends> HttpServlet... which should suffice, much like the typical
HelloWorld
> sample servlets.
>
> I have to remove the WEB-INF directory and register this as a standard
httpd
> servlet to get weblogic to run it properly.
> This servlet deploys fine with Jakarta-Tomcat as a WebApp and the same
web.xml
> file. I can post that, if need be. I assume the classloader is somehow
> confused.
>
> Is this the same problem discussed below? If so, there's no reference to
the
> version of WLS that will address this issue.
>
> I'm currently using WLS 5.1. <Fri Nov 10 13:48:48 EST 2000:<I>
<WebLogicServer>
> ************ WebLogic Server (5.1.0 04/03/2000 17:13:23 #66825)>
>
> Has this been fixed or is there a workaround that allows WebApp deployment
to
> succeed? I really would like to stay away from as much web/app server
specific
> configuration as possible before taking this into the field.
>
> Jon
>
> Mark Griffith wrote:
>
> > Alexandre:
> >
> > Although byte for byte the FooObject is the same, according to the VM
they
> > are different class. This is because a class's type distinctiveness is
> > based not only its interfaces,methods,data members etc but ALSO on its
> > classloader. There is a different classloader for the
> > serversclasses_FooObject and the servletclasses_FooObject so they are
> > considered different, so you get a CCE.
> >
>
> etc...
>
> >
> > This will be handled more elegantly in our next major release Spring
2000,
> > however note (and prepare by designing accordingly) the solution is to
allow
> > the Servlet to interact with interfaces not actual classes and these
> > interfaces can be stuffed into system/server loaded classes such as
> > workspaces and httpsessions, thus preventing CCE's.
> >
> > Cheers
> > Mark G
> >
> > Alexandre Aubry wrote:
> >
> > > I have a named workspace which is created at startup of the server
> > > within a starup class.
> > > When the startup method is called, I instantiate and put an object
> > > called FooObject in the workspace.
> > >
> > > Then, in a servlet, called Dispatcher, in the service method, I
> > > retrieved my named workspace and the object
> > > FooObject which is in this workspace. At this time, I have a
> > > ClassCastException.
> > >
> > > To give you more details about my configuration, here is my directory
> > > configuration:
> > > weblogic
> > > |----------- serverclasses
> > > |------------- startupObject
> > > |------------- FooObject
> > > |----------- servletclasses
> > > |------------- myServlet
> > > |------------- FooObject (which is
exactly
> > > the same of the serverclasses one)
> > >
> > > Do you have any ideas ? The idea is to instantiate a given object at
the
> > > startup of the web server and to retrieve
> > > these objects within servlets and JSPs.
> > >
> > > Regards.
> > >
> > > --
> > > Alexandre Aubry
> > > Consultant
> > > Fi System, The Web Agency
>
> ---
> Jon M. Armstrong
> Senior Systems Consultant
> Xelus, Inc.
>
> EMail: [email protected]
> Phone: 716-419-3155
> Fax: 716-248-9199
>
> Visit us online: http://www.xelus.com
>
>
-
How to combine servlet and jsp
I'm doing a project. My friend using jsp. and i using servlet..
we are confused, how to combine servlet and jsp. or we can just use redirect??
but it's still doesn't work properly...thanks for your helppYou can use RequestDispatcher interface for calling a JSP from a Servlet, or vice-versa.
Following is the code for sending output to a JSP page from a servlet:
javax.servlet.RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(�/Ashu.jsp�);
request.setAttribute(�Name�,�Ashutosh�);
dispatcher.forward(request,response);
- Ashutosh -
Servlets and Workspaces (AND ClassCastExceptions)
I have a similiar situation but am not getting a ClassCastException but rather a
NullPointerException when I try
to use a contained object in my stored object.
I do this in the server:
WorkspaceServicesDef workspaceServices = services.workspace();
WorkspaceDef defaultWS = workspaceServices.getWorkspace();
WorkspaceDef dataWS = defaultWS.getWorkspace("DATA_WORKSPACE",
WorkspaceDef.CREATE,
WorkspaceDef.SCOPE_SERVER);
dataWS.store(cMSKey, ms);
and this in the JSP page:
// Get the default T3Client Workspace
WorkspaceDef defaultWS = t3.services.workspace().getWorkspace();
// Attach to the system subWorkspace already created
WorkspaceDef myDataWS = defaultWS.getWorkspace("DATA_WORKSPACE",
WorkspaceDef.ATTACH,
WorkspaceDef.SCOPE_SERVER);
MimicServer ms = (MimicServer) myDataWS.fetch("MimicServer");
Questions:
1)Must I make the Object I want to store in the WorkSpace Serializable?? The
Documentation says it can just be
a Java Object??
2) In my JSP page I get a good Object reference, but its contents are null
(Probably because I didn't implement write() and read()).
Thanks,
matt obrien
[email protected]
Mark Griffith wrote:
> Alexandre:
>
> Although byte for byte the FooObject is the same, according to the VM they
> are different class. This is because a class's type distinctiveness is
> based not only its interfaces,methods,data members etc but ALSO on its
> classloader. There is a different classloader for the
> serversclasses_FooObject and the servletclasses_FooObject so they are
> considered different, so you get a CCE.
>
> Problem is that the servletclasses directory is designed to solve the
> problem of reloading servlet classes and objects they used when modified
> without having to restart the server. But this introduces the problem
> discussed above. The only solution currently is to put the FooObject only in
> one place or another. Unfortunately if you want a class in servletclasses
> to interact classes loaded by the system/server classloader you cannot put
> the class in the servletclasses without getting a CCE on reload of the
> servlet in servletclasses. In this case you must put the class only in the
> serverclasses directory. And this means of course you can only reload the
> FooObject in the serverclasses directory if you bounce the server. (the
> default java classloading behavior).
>
> This will be handled more elegantly in our next major release Spring 2000,
> however note (and prepare by designing accordingly) the solution is to allow
> the Servlet to interact with interfaces not actual classes and these
> interfaces can be stuffed into system/server loaded classes such as
> workspaces and httpsessions, thus preventing CCE's.
>
> Cheers
> Mark G
>
> Alexandre Aubry wrote:
>
> > I have a named workspace which is created at startup of the server
> > within a starup class.
> > When the startup method is called, I instantiate and put an object
> > called FooObject in the workspace.
> >
> > Then, in a servlet, called Dispatcher, in the service method, I
> > retrieved my named workspace and the object
> > FooObject which is in this workspace. At this time, I have a
> > ClassCastException.
> >
> > To give you more details about my configuration, here is my directory
> > configuration:
> > weblogic
> > |----------- serverclasses
> > |------------- startupObject
> > |------------- FooObject
> > |----------- servletclasses
> > |------------- myServlet
> > |------------- FooObject (which is exactly
> > the same of the serverclasses one)
> >
> > Do you have any ideas ? The idea is to instantiate a given object at the
> > startup of the web server and to retrieve
> > these objects within servlets and JSPs.
> >
> > Regards.
> >
> > --
> > Alexandre Aubry
> > Consultant
> > Fi System, The Web Agency
> > http://www.fisystem.fr
> > mailto:[email protected]
> > Phone: +33 1 55 04 03 03 Fax: +33 1 55 04 03 04
>
> --
> =====================================================
> Reply to the newsgroup. Don't reply to this mail
> alias. This is used only for answering posts on
> WebLogic Newsgroups.
> =====================================================
-
Hi!
I need help. I'm working with OC4J 9.0.2.0.0a behind Apache. In my application a have to obtain data of DataBase and show it in a fdf. To do that i have done a class that obtains the data and a servlet that show it in a fdf using classes of Adobe. The Adobe jar's name is jFdfTk. The servlet runs ok at port 7777, but when i change to port 80 the fdf doesn't show data. I can't understand why.
Does anyone have the same problem??
Can anyone help me??
Does anyone know why??
Thanks!I see now that I can use the old method of JNDI
lookup with the 3rd party messaging from a web
container, I just can't use the java:comp/resource/MQSeries logical JNDI location.
document: oracle 9ias Container for J2EE,
Services Guide
Release 2(9.0.3)
Aug 2002
Part No A97690-01
Chapter 9 Page 9-2
I am having trouble with this statement;
The ResourceProvider interface enables you to plug in
third-party message
providers for JMS connections. For Oracle JMS, this
allows EJBs, servlets, and OC4J
clients to access many different queue
implementations.
(OK good so far,)
With third-party message
providers, only EJBS can access queue
implementations. The resources are available
under java:comp/resource/ as the default JMS
resources.
WHAT? I can't do asynchronous messaging from a web
App to a MDB with a 3rd party JMS implementation?
What gives?
Can someone tell me this is not true please -
Interaction between 2 classes (servlet and someother)
Hi all,
I have 2 java files one is a servlet and the other is an ordinary java file which checks to see whether a username and password exists in the database(UserPresent.java).This file has got the presentation layer which has to be put into the servlet.
The servlet file must call the UserPresent.java file.I am going to make an interface to the UserPresent.java file ,I will call it User.java.This User.java file will have a method by name
public boolean validateUser(String username,String pasword) .
The UserPresent.java file will implement this interface.
My question now is,where will these java files be put ?,hope that my point is conveyed.How do I test UserPresent.java file.Kindly excuse me if there is a much more sophisticated way of expressing this.
Hoping to hear from you all
Thanks
ASIf put means where does that files goes into directories.
then u can put that files in same package as servlet resides or put in anther package and import
thats all my understanding
regards
hithesh -
What is diff b/w abstarct and interface
what is diff b/w abstarct and interface in real time where we come across, give a best real time example
I think there have been lots of threads in this forum discussing interfaces and abstract classes.
http://forum.java.sun.com/thread.jspa?forumID=256&threadID=389830
http://forum.java.sun.com/thread.jspa?forumID=54&threadID=5120074
http://forum.java.sun.com/thread.jspa?forumID=54&threadID=499077
http://forum.java.sun.com/thread.jspa?forumID=31&threadID=546668
Interfaces define a contract for what an implementing class should provide. Abstract classes do the same but they can also provide some common part of the implementation. -
Help needed on Servlets and JSTL
Hi
I am using tomcat 5.5 and JDK 1.5. What are the softwares I have to download for compiling servlets and creating JSTL ?. Help needed.
Thanks
IndyaRajaI tried compling servlet, but it is raising error
that coul not find package javax.servletWhat I did not mention... you need to add those JARs in the Classpath explicitly. You will find them in %TOMCAT_HOME%\common\lib. You atleast need to add servlet-api.jar to your Classpath. :) -
Difference between servlet and filter
difference between servlet and filter
Its not a secret you know; if you just read a little about what they are used for, you answer your own question plus many more to follow.
Servlet: http://en.wikipedia.org/wiki/Java_Servlet
Filter: http://www.oracle.com/technetwork/java/filters-137243.html -
Difference between servlet and ActionServlet
Difference between servlet and ActionServlet..
Anybody replyjsf_VWP5.5.1 wrote:
Difference between servlet and ActionServlet..
Anybody replyAs their name imply, ActionServlets like outdoor activities, whereas Servlets are rather contemplative types.
The only time Servlets exhibit behavior similar to ActionServlets, in under extremely stressful situations, like when a Servlet is being chased by a pit bull. -
How to get the query values from the url in a servlet and pass them to jsp
ok..this is the situation...
all applications are routed through a login page...
so if we have a url like www.abc.com/appA/login?param1=A¶m2=B , the query string must be passed onto a servlet(which is invoked before the login page is displayed)..the servlet must process the query string and then should pass all those values(as hidden values) to the login jsp..then user enters username and pswd, then there should be another servlet which takes all the hidden values of jsp and also username and pswd, authenticates the user and sends the control back to that particular application along with the hidden values...
so i need help on how to parse the query string from the original url in the servlet, pass it out to jsp, and then pass it back to the servlet and back to the original application...damnn...any help would be greatly appreciated...thanksok..this is the situation...Sounds like you have a bad design on your hands.
You're going to send passwords in a GET request as clear text? Nice security there.
Why not start with basic security and work your way up?
% -
Names of interface tables and interface programs of oracle modules
Hi all,
i need urgent and accurate information about the names of interface tables and interface programs of the following oracle modules,R12, or either ther are custom made. Any accurate link refering to the desire information would be much appreciated.
Plus i need a clear and simple definition and purpose of interface tables and interface program and by what other names are they known in industry.
Data Object,Oracle Module
Chart of Accounts,Oracle General Ledger
Trial Balance,Oracle General Ledger
Supplier Master,Oracle Payables
Open Supplier Invoices,Oracle Payables
Open Supplier Credit/ Debit Memos,Oracle Payables
Open Supplier Advances,Oracle Payables
Bank Master,Oracle Cash Management
Customer Master,Oracle Receivable
Asset Categories,Oracle Assets
Asset Master,Oracle Assets
Item Master,Oracle Inventory
Item Categories,Oracle Inventory
Sub Inventory and Locators,Oracle Inventory
Item On Hand Balances,Oracle Inventory
Item wise Per unit Cost,Oracle Inventory
Bill of Material,Oracle Discrete Manufacturing
Departments,Oracle Discrete Manufacturing
Operations,Oracle Discrete Manufacturing
Routings,Oracle Discrete Manufacturing
Resources,Oracle Discrete Manufacturing
Overheads,Oracle Discrete Manufacturing
Employee Master,Approval Hierarchy
Approval Hierarchy,Approval Hierarchy
Open Customer Invoices,Oracle Receivables
Open Customer Credit/ Debit Memos,Oracle Receivables
Open Customer Advances,Oracle Receivables
Pending Requisitions,Oracle Purchasing
Pending Purchase Orders,Oracle Purchasing
Open Sales Orders,Oracle Order Management
Price List,Oracle Order ManagementHi;
Its metalink note you need to login metalink wiht valid CSI(customer Support Identifier) number to can se note via using note number.
Please see:
Oracle EBS Based and Interface tables
Oracle EBS Based and Interface tables
Regard
Helios -
How can I have a default servlet and an index.html?
Hi,
I writing a small webapp to test/understand the 2.2 Servlet Spec. I am deploying this as a WAR to Orion, Tomcat and Silverstream.
The app's name is: "myapp"
My application has an index.html, which is listed as the sole welcome-file in the welcome-file-list element in the app's web.xml.
The interesting thing is that, after adding a default Servlet (<url-pattern>/</url-pattern>), I can no longer access the app's index.html either implicitly or explicitly:
1. Implicit:
- http://localhost/myapp
- http://localhost/myapp/
2. Explicit:
- http://localhost/myapp/index.html
- http://localhost/myapp/index.html/
All of these invoke the Default Servlet in all 3 app servers.
Question: How can I have both a default Servlet and an index page?
Thanks in advance.
Milesyou can define it in the web.xml file
look at the dtd, element "welcome-file-list" -
Using database connection in a servlet and get errors after 8 hours
Hey,
I'm running a poker script using applet/servlets and it works great. But for some reason about about 8 hours that database layer stops working. At first I thought it was the connections to mySQL that were timing out (because im using connection pooling) but after turning pooling off (I now create the connection each time) I'm still seeing that same error (I can create a connection but when I do an action ex. like a select statment I get an error). What i'm wondering could it be that the driver I load with Class.forName() some how unloads it's self after x amount of time not being used? Not sure if that is it but if anyone could give me some insight that would be great. The Error i recieve is below:
INFO: Database Event:DatabaseController: Error executing database query.
ERROR: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: recv failed
STACKTRACE:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:104)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:172)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1839)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2288)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2784)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2370)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1183)
at com.softnet.database.DatabaseController.executeDatabaseQuery(DatabaseController.java:190)
at com.softnet.games.GameServer.validateUser(GameServer.java:438)
at com.softnet.games.GameServer.handleData(GameServer.java:113)
at com.softnet.network.HttpConnectionThread.run(HttpServletListener.java:191)
** END NESTED EXCEPTION **
I know the query is good because it works all other times just not after about 8 hours.
--Z3r0CooLHey,
Thanks for the responces. For the connection pooling I would open 5 connections and keep them open. So i though maybe after 8 hours after not being used they would timeout. Thats why i turned off conection pooling and create a new connection each time. Anyways i'll post the code below incase i made a mistake somewhere.
package com.softnet.database;
/************************ DatabaseControler **************************/
import java.sql.*;
import java.util.*;
import com.softnet.database.DatabaseConnectionPool;
import com.softnet.database.DatabaseSettings;
public class DatabaseController
implements DatabaseListener
//Used to make sure the database driver is loaded
private boolean databaseDriverState = false;
//Used to store a database connection
private Connection databaseConnection = null;
//If to user connection pooling or not
private boolean useConnectionPooling = false;
//Used to hold the connection pool varible
private DatabaseConnectionPool connectionPool = null;
//Used to store database settings
private DatabaseSettings databaseSettings;
//Used to hold the DatabaseController listeners
private List databaseControllerListeners = new ArrayList();
//min number of connections for connection pool
private int minNumberOfConnections = 1;
//max number of connections for connection pool -1 is unlimited
private int maxNumberOfConnections = -1;
//DatabaseController Constructors
public DatabaseController(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
public DatabaseController(DatabaseSettings databaseSettings, boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
this.databaseSettings = databaseSettings;
this.useConnectionPooling = useConnectionPooling;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
if(useConnectionPooling == true)
connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
connectionPool.addDatabaseListener(this);
else
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
public DatabaseController() {}
//Database Settings Get/Set
public DatabaseSettings getDatabaseSettings()
return databaseSettings;
public void setDatabaseSettings(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
//Connection Pooling Get/Set
public boolean getConnectionPooling()
return useConnectionPooling;
public void setConnectionPooling(boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
this.useConnectionPooling = useConnectionPooling;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
if(useConnectionPooling == true)
if(connectionPool == null)
connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
connectionPool.addDatabaseListener(this);
else
if(connectionPool != null)
connectionPool.destroyConnections();
connectionPool.removeDatabaseListener(this);
connectionPool = null;
//Return if there connected
public boolean isConnected()
boolean isConnected;
if(databaseConnection != null)
isConnected = true;
else
isConnected = false;
return isConnected;
//Used to connect to database or get a connection for the connection pool
public void connect()
if(databaseDriverState == false)
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//If we dont have a current connection, make one
if(databaseConnection == null && databaseDriverState == true)
if(useConnectionPooling == false)
try
databaseConnection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch (SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error connecting to database. \nERROR: " + sqle.getMessage());
databaseConnection = null;
else
databaseConnection = connectionPool.getConnection();
//Used to disconnect from the database or give back the connection to the connection pool
public void disconnect()
if(databaseConnection != null)
if(useConnectionPooling == false)
try
//Close DB Connection
databaseConnection.close();
catch(SQLException ignore) {}
finally
databaseConnection = null;
else
connectionPool.returnConnection(databaseConnection);
databaseConnection = null;
public ResultSet executeDatabaseQuery(String sSQL)
ResultSet databaseResult = null;
if(databaseConnection != null)
try
Statement databaseStatement = databaseConnection.createStatement();
databaseResult = databaseStatement.executeQuery(sSQL);
catch(SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error executing database query.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
return databaseResult;
public int executeDatabaseUpdate(String sSQL)
int rowsAffected = -1;
if(databaseConnection != null)
try
Statement databaseStatement = databaseConnection.createStatement();
rowsAffected = databaseStatement.executeUpdate(sSQL);
catch(SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error executing database update.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
return rowsAffected;
//Used to load the Database Driver
private boolean loadDatabaseDriver(String databaseDriver)
boolean driverLoaded;
if(databaseDriver.equals("") == false)
try
//Load Database Driver
Class.forName(databaseDriver).newInstance();
driverLoaded = true;
catch (Exception e)
//Raise event
raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + e.getMessage());
driverLoaded = false;
else
driverLoaded = false;
return driverLoaded;
//Wrap the DatabaseConnectionPool Error to the DatabaseController
public void databaseEventOccurred(DatabaseEvent de)
raiseDatabaseEvent(de.getErrorMessage());
//Event Handling Code
//Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
public synchronized void addDatabaseListener(DatabaseListener databaseControllerListener)
databaseControllerListeners.add(databaseControllerListener);
//Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
public synchronized void removeDatabaseListener(DatabaseListener databaseControllerListener)
databaseControllerListeners.remove(databaseControllerListener);
//Used to send the raise event to the listeners
private synchronized void raiseDatabaseEvent(String databaseError)
DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
Iterator listeners = databaseControllerListeners.iterator();
while(listeners.hasNext())
DatabaseListener listener = (DatabaseListener) listeners.next();
listener.databaseEventOccurred(databaseEvent);
/********************* DatabaseConnectionPool **************/
package com.softnet.database;
import java.io.*;
import java.sql.*;
import java.util.*;
import com.softnet.database.*;
import com.softnet.database.DatabaseSettings;
public class DatabaseConnectionPool
//min number of connections
private int minNumberOfConnections = 1;
//max number of connections -1 is unlimited
private int maxNumberOfConnections = -1;
//Store the connections
protected Hashtable databaseConnections = null;
//Database Info
protected DatabaseSettings databaseSettings;
//to hold Driver state
private boolean databaseDriverState = false;
//To hold connection checker
private DatabaseConnectionCheck connectionChecker = null;
//Used to hold the DatabaseConnectionPool listeners
private List databaseConnectionPoolListeners = new ArrayList();
public DatabaseConnectionPool(DatabaseSettings databaseSettings, int minNumberOfConnections, int maxNumberOfConnections)
this.databaseSettings = databaseSettings;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
//Load Driver
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//Create connection
createConnections();
public DatabaseConnectionPool(int minNumberOfConnections, int maxNumberOfConnections)
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
//Database Settings Get/Set
public DatabaseSettings getDatabaseSettings()
return databaseSettings;
public void setDatabaseSettings(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
//Driver State Get
public boolean getDatabaseDriverState()
return databaseDriverState;
public void createConnections()
if(databaseDriverState == false)
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//Create all connections and load the minimum in the Hashtable
if(databaseConnections == null)
if(databaseDriverState == true && minNumberOfConnections != 0)
databaseConnections = new Hashtable();
for(int i = 0; i < minNumberOfConnections; i++)
try
databaseConnections.put(DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword()), Boolean.FALSE);
catch(SQLException sqle)
//Problem break loop and destroy any connections
destroyConnections();
//Raise event
raiseDatabaseEvent("DatabaseConnectionPool: Error creating database connections. \nERROR: " + sqle.getMessage());
break;
//If no connection check exists create one
if(connectionChecker == null)
connectionChecker = new DatabaseConnectionCheck(this);
connectionChecker.start();
public Connection getConnection()
Connection connection = null;
boolean errorWithConnection = false;
Enumeration connections = databaseConnections.keys();
synchronized (databaseConnections)
while(connections.hasMoreElements())
errorWithConnection = false;
connection = (Connection) connections.nextElement();
Boolean state = (Boolean) databaseConnections.get(connection);
//If connection is not used, use it.
if(state == Boolean.FALSE)
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
// Update the Hashtable to show this one's taken
databaseConnections.put(connection, Boolean.TRUE);
// Return the connection
return connection;
//All connections being used check to max to see if we can make a new one
if(maxNumberOfConnections == -1 || maxNumberOfConnections > databaseConnections.size())
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
databaseConnections.put(connection, Boolean.TRUE);
return connection;
//If not connections free and max connections reached wait for a free connection
return getConnection();
public void returnConnection(Connection connection)
boolean errorWithConnection = false;
//Make sure connection still works
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
databaseConnections.put(connection, Boolean.FALSE);
public void destroyConnections()
Connection connection = null;
if(databaseConnections != null)
//Close all connections
Enumeration connections = databaseConnections.keys();
while (connections.hasMoreElements())
connection = (Connection) connections.nextElement();
try
connection.close();
catch(SQLException ignore) {}
//Free up hashtable
databaseConnections = null;
private boolean loadDatabaseDriver(String databaseDriver)
boolean driverLoaded;
if(databaseDriver.equals("") == false)
try
//Load Database Driver
Class.forName(databaseDriver);
driverLoaded = true;
catch (ClassNotFoundException cnfe)
//Raise event
raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + cnfe.getMessage());
driverLoaded = false;
else
driverLoaded = false;
return driverLoaded;
//Event Handling Code
//Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
public synchronized void addDatabaseListener(DatabaseListener databaseConnectionPoolListener)
databaseConnectionPoolListeners.add(databaseConnectionPoolListener);
//Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
public synchronized void removeDatabaseListener(DatabaseListener databaseConnectionPoolListener)
databaseConnectionPoolListeners.remove(databaseConnectionPoolListener);
//Used to send the raise event to the listeners
private synchronized void raiseDatabaseEvent(String databaseError)
DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
Iterator listeners = databaseConnectionPoolListeners.iterator();
while(listeners.hasNext())
DatabaseListener listener = (DatabaseListener) listeners.next();
listener.databaseEventOccurred(databaseEvent);
class DatabaseConnectionCheck extends Thread
private DatabaseConnectionPool connectionPool;
DatabaseConnectionCheck(DatabaseConnectionPool connectionPool)
this.connectionPool = connectionPool;
public void run()
try
while(true)
//check threads every 30 seconds
this.sleep(300000);
if(connectionPool.databaseConnections != null)
Connection connection = null;
Enumeration connections = connectionPool.databaseConnections.keys();
synchronized (connectionPool.databaseConnections)
while(connections.hasMoreElements())
connection = (Connection) connections.nextElement();
Boolean state = (Boolean) connectionPool.databaseConnections.get(connection);
//If connection is not used, use it.
if(state == Boolean.FALSE)
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
connectionPool.databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(connectionPool.databaseSettings.getDatabaseURL(), connectionPool.databaseSettings.getUserName(), connectionPool.databaseSettings.getUserPassword());
catch(SQLException sqle)
connection = null;
// Update the Hashtable with new connection if its not null
if(connection != null)
connectionPool.databaseConnections.put(connection, Boolean.FALSE);
catch(InterruptedException ignored) {}
Basicly the why it works is the connection pool hold the database connections. When the user needs a connection they use the database controller to request a connection (By create a instance and called the connect() method) and the connection is either created or grabed from the connection pool. After the user is done with the connection they call the disconnect() method which closes the connection or returns it to the connection pool.
--Z3r0CooL
Maybe you are looking for
-
How to download a dynamic generated table to excel.
Hi all, I have req where i need to download the contents of table whose columns are generated dynamically.Please help me in this, i used the exporttoexcel2003() fun for static colmuns, is there any other posibility to do this. Please help me in this
-
Which VPN best for iPhone security?
I understand, thanks to "Kappy -Don't call me late for dinner", that in order to beef up my MacBook Pro's security I can: "Use software to mask your online presence such as ProxyCap 2.03,MacProxy, Proxifier, or Hotspot Shield." Are any/all of these
-
Hi, I am using an old PC P2 450Mhz, 256 MB Ram. Is ver 3.6.16 ok for my system or will it slow down the system? NODD is the anti-virus. I am not happy with IE or goolge as these are taking too much space. Thanks
-
Can i open 2 pages at the excatly same time
Hi guys, I want to load 2 pages but exactly same same time.
-
Ipod back from "diagnosis" by apple - now can't load library onto ipod
My ipod - 5th generation color screen - recently completely stopped working, no matter what self help i tried. i sent it away to apple to be repaired [ it's still under warranty] it came back with the all clear - they had installed firmware on it - t