Announcement Announcement Module
No announcement yet.
How do Migrate Java, Spring Project to use JNDI datasources Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • How do Migrate Java, Spring Project to use JNDI datasources

    I have a Java project that runs from the command line. It is using Spring. At the current time my project is mySQL. Use can see from the config.xml below

     <bean id="mysqldataSource"
        	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
        	<property name="url" value="mysqldataSource.url" />
        	<property name="username" value="mysqldataSource.username" />
        	<property name="password" value="mysqldataSource.password" />
    My firm is asking me to change the project from using MySQL to use a JNDI Data source.

    Below is my java code with you can see is using jdbcTemplate:

      public class DisasterReliefMySQLImpl extends JdbcTemplate implements
        		DisasterReliefMySQL {
        	private static Log log = LogFactory.getLog(DisasterReliefMySQLImpl.class
        	String querySQL;
        	int counter = 0;
        	public int getCounter() {
        		return counter;
        	private String getQuerySQL() {
        		return querySQL;
        	private void setQuerySQL(String querySQL) {
        		this.querySQL = querySQL;
        	DisasterReliefMySQLImpl(DataSource ds) {
        	DisasterReliefMySQLImpl(DataSource ds, String querySQL) {
        	public int updateDonation(String id) {
        		Long eTime = System.currentTimeMillis() / 1000;
        		String updateSQL = "update uft_donation set sent_to_mbs="
        				+ eTime.toString() + " where  donation_id =" + id;
        		return (int) this.update(updateSQL);
        	public List<Donation> returnResults() {
        		log.debug("Starting returnResults...");
        		List<Donation> Donations = new ArrayList<Donation>();
        		List<Map<String, Object>> rows = this.queryForList(getQuerySQL());
        		counter = 0;
        		for (Map row : rows) {
        			Donation d = new Donation();
        			d.setDonationID((Long) row.get("donation_id"));
        			d.setCCTransactionNumber((String) row.get("txn_id"));
        			d.setProgramCode((String) row.get("gl_code"));
        			d.setLastName((String) row.get("billing_last_name"));
        			d.setFirstName((String) row.get("billing_first_name"));
        			d.setAmount((String) row.get("mc_gross"));
        			d.setAddressLine1((String) row.get("billing_street1"));
        			d.setAddressLine2((String) row.get("billing_street2"));
        			d.setCity((String) row.get("billing_city"));
        			d.setState((String) row.get("zone_code"));
        			d.setZipCode((String) row.get("billing_postal_code"));
        			d.setCountry((String) row.get("country_name"));
        		log.debug(counter + " Donation(s) loaded");
        		return Donations;

    Can someone please tell me how to change this to use a JNDI datasource. Also do I need a JNDI service somewhere for the database pooling?? We have JBoss AS7 with datasources in it can I use that from outside JBoss??


  • #2
    I suggest a read of the reference guide, a JNDI lookup is just a single line of xml. If JBoss lets you do a remote lookup depends on the configuration of/in JBoss (I suggest a read of the JBoss docs for that).