-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Daniel,

Daniel Blumenthal wrote:
> I'm looking into upgrading from 1.2.9 to 1.3.8, and I'm having a hard time
> figuring out how to get DataSources for my application.
>
> I understand that this was removed in 1.3, but it's unclear how to make the
> switch.

It depends on your servlet container. You /can/ configure a JNDI
datasource by hand in your own code, say, in a
ServletContextInitListener, but it's often easier to have your container
provide the datasource for you.

For instance, Apache Tomcat makes this pretty darned easy. You can
define a JNDI datasource at the server level, or per webapp. The
configuration is (roughly) the same; it just goes in a different place
in your config files.

> The documentation has a one-liner about using JNDI to get
> DataSources, but I can't seem to find any examples.

Getting the datasource (once it exists) is very easy. Where you used to
call:

   getDataSource(request, "dataSourceId")

you'll now need to do something like this:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

            Context ctx = new InitialContext();

            DataSource ds =
   (DataSource)ctx.lookup("java:/comp/env/jdbc/your-datasource-name");

            return ds.getConnection();

Don't forget to handle null DataSources and NamingExceptions.

I never use data sources in action code. I find this to be a bad
practice, since I tend to think of my actions as being in the display
logic layer, not in my data access layer.

My data access layer is made up of a series of service classes which all
inherit from a base class which defines a getConnection method which
roughly does the above (and properly checks for null, NamingExceptions,
etc.).

Whatever do you, I would recommend against putting any JNDI-specific
code into (all) your actions. If you have to keep data access in your
actions, I would recommend putting a getConnection method in your
actions' base class and then use that instead of Action.getDataSource().

- -chris

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF+CeZ9CaO5/Lv0PARAibOAKCZ2ij442Vi5SFk/N8UvCcLwFrgegCeLiid
H+2pTyelGuCOXP/fGdD45hg=
=xQoE
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to