Java tutorial
/* * Copyright (C) 2010---2014 (wuweixing)<349446658@qq.com> * * This file is part of Wabacus * * Wabacus is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.wabacus.config.database.datasource; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Element; import com.wabacus.exception.WabacusConfigLoadingException; public class JNDIDataSource extends AbsDataSource { private static Log log = LogFactory.getLog(JNDIDataSource.class); private String jndi; private DataSource ds; public String getJndi() { return jndi; } public void setJndi(String jndi) { this.jndi = jndi; } public Connection getConnection() { Connection conn = null; try { log.debug("??" + this.getName() + "??"); conn = getDataSource().getConnection(); } catch (SQLException e) { log.error("????", e); } return conn; } public DataSource getDataSource() { Context context = null; try { if (ds != null) { return ds; } context = new InitialContext(); ds = (DataSource) context.lookup(jndi); return ds; } catch (Exception e) { log.error("????", e); return null; } finally { try { if (context != null) { context.close(); } } catch (Exception ex) { log.error("????", ex); } } } public void loadConfig(Element eleDataSource) { super.loadConfig(eleDataSource); List lstEleProperties = eleDataSource.elements("property"); if (lstEleProperties == null || lstEleProperties.size() == 0) { throw new WabacusConfigLoadingException("??" + this.getName() + "?jndi?"); } Element eleChild; String name; String value; for (int i = 0; i < lstEleProperties.size(); i++) { eleChild = (Element) lstEleProperties.get(i); name = eleChild.attributeValue("name"); value = eleChild.getText(); name = name == null ? "" : name.trim(); value = value == null ? "" : value.trim(); if (name.equals("jndi")) { jndi = value; break; } } if (jndi == null || jndi.trim().equals("")) { throw new WabacusConfigLoadingException("??" + this.getName() + "?jndi"); } } }