Ok, this is embarrassing. Peter, I re-read your
message, and realized I was already doing everything
you were (I got everything running FIRST, now I'm
going back and adding security, connection pooling,
etc.). All I had to do was delete the 'work'
directory and poof. I've been burned by that so many
times in my company's app, I can't believe I missed it
here. How about logging - do you use log4j?
(currently I've got a boatload of printlns). Thanks
again.
--- Peter Kordel <[EMAIL PROTECTED]> wrote:
> Andy, I use Poolman in a Struts application and did
> it this way:
> Downloaded poolman-2.1-b1 (you can even use CVS to
> pull the latest
> version from their site)
> Configured poolman.xml to work with mysql
> 3.23.46/mm.mysql-2.0.8 and
> stuck it in WEB-INF/classes of my web app
> BTW this works for both tomcat 3.2.4 and 4.0.1 -
> with struts-1.0
> Then I preload an initservlet on startup that grabs
> a Poolman
> datasource.
> It also tears down all pools in destroy()
> This datasource is stored in a connectionholder
> object in the
> servletcontext that acts as a wrapper for Poolman.
> I used this extra layer of abstraction so I can pull
> a generic
> datasource from the servletcontext and call methods
> such as
> getConnection() and closeConnection() that in turn
> call the correct
> methods in Poolman. That way, I can plug-and-play
> with alternative
> connection pools without modifying my application
> objects.
>
> // set up a connection pool with
> // <dbName> from web.xml initparam
> javax.sql.DataSource defaultPool =
> PoolMan.findDataSource(dbName);
>
> zConnectionHolder dsPool =
> new zConnectionHolder();
>
> dsPool.setDefaultPool(defaultPool);
> context.setAttribute("dsPool", dsPool);
>
> Then I proceed like you:
> zConnectionHolder dsPool =
> (zConnectionHolder) servlet.getServletContext()
> .getAttribute("dsPool");
> java.sql.Connection con =
> dsPool.getConnection();
>
> dsPool.closeConnection();
>
> Works like a charm. Your error makes no mention of
> anything that looks
> like a non-tomcat or non-struts object, so it's
> probably a config error
> in setting up you web app with tomcat/struts
> I work like this: develop in a source directory,
> then deploy to the
> servlet container (with ant), with a "clean" target
> if needed, and then
> bounce tomcat (and apache, if in the loop). I have
> even run into the
> need to shut down tomcat, whack my web app *and*
> tomcat/work directories
> before deploying - primarily on Unix. And - turn on
> as much debugging as
> possible initially. *Logs are your friend*
> Many pieces have to be happy for it all to work, and
> they will be happy
> to let you know if they don't play well with other
> children. Also, don't
> do what I do: fix 50 things at once, instead debug
> incrementally by
> changing one thing at a time.
>
> Be aware that mysql versions 3.23.36 and below fail
> miserably with
> Poolman, as Poolman tries to set transaction levels
> and mysql barfs in
> technicolor.
>
>
> Andy Timm wrote:
> >
> > Hello. I am trying to implement a DB connection
> > manager with my Struts webapp. I created a
> servlet
> > that gets called when Tomcat is initialized, that
> > creates a DbConnectionBroker, and puts it in the
> > ServletContext:
> > getServletContext().setAttribute("dbPool",
> dbPool);
> >
> > In a 'ActionForm', I'm validating a username
> against
> > the database, so I grab the dbPool object to pass
> into
> > my database bean:
> > DbConnectionBroker pool =
> >
>
(DbConnectionBroker)servlet.getServletContext().getAttribute("dbPool");
> >
> > This works fine for the first page. When I
> attempt to
> > access the next page (any other following page),
> right
> > after the "checkLogin" tag is called, it throws
> the
> > exception below. Two questions... First, I would
> > like to utilize Struts datasource mapping, but
> don't
> > know how to do so while using a different
> connection
> > manager. (There was a post yesterday suggesting
> > Poolman... ) Second, what am I doing wrong so that
> I
> > cannot access my next page? The 'Action' called
> after
> > the working page executes normally, then it dies.
> I'm
> > loading two servlets (action, and my initDBPool)
> in
> > web.xml. Is there some rule about which must be
> > loaded first? I'm new to the whole servlet thing,
> but
> > it seems like it's looking to my initDBPool
> servlet
> > for information it should find elsewhere (hence
> the
> > IncompatibleClassChangeError). I would be most
> > grateful if someone could explaine the 'proper'
> method
> > for merging connectionPooling with Struts - but
> I'd be
> > happy for a solution for my problem at hand too...
> > Thanks, Andy Timm
> >
> > java.lang.IncompatibleClassChangeError
> > at
> >
>
_0002fregister_0002ejspregister_jsp_0._jspService(_0002fregister_0002
> > ejspregister_jsp_0.java:578)
> > at
> >
>
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
> > at
> >
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> >
>
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspSer
> > vlet.java:177)
> > at
> >
>
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
> > 18)
> > at
> >
>
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
> > at
> >
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> >
>
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:4
> > 04)
> > at
> >
>
org.apache.tomcat.core.Handler.service(Handler.java:286)
> > at
> >
>
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372
> > )
> > at
> >
>
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatc
> > herImpl.java:194)
> > at
> >
>
org.apache.struts.action.ActionServlet.processActionForward(ActionSer
> > vlet.java:1758)
> > at
> >
>
org.apache.struts.action.ActionServlet.process(ActionServlet.java:159
> > 5)
> > at
> >
>
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:491)
> > at
> >
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> > at
> >
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> >
>
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:4
> > 04)
> > at
> >
>
org.apache.tomcat.core.Handler.service(Handler.java:286)
> > at
> >
>
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372
>
=== message truncated ===
__________________________________________________
Do You Yahoo!?
Check out Yahoo! Shopping and Yahoo! Auctions for all of
your unique holiday gifts! Buy at http://shopping.yahoo.com
or bid at http://auctions.yahoo.com
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>