de.pksoftware.springstrap.core.config.JndiRdbmsConfigBase.java Source code

Java tutorial

Introduction

Here is the source code for de.pksoftware.springstrap.core.config.JndiRdbmsConfigBase.java

Source

/*
 * 
 * Springstrap
 *
 * @author Jan Philipp Knller <info@pksoftware.de>
 * 
 * Homepage: http://ui5strap.com/springstrap
 *
 * Copyright (c) 2013-2014 Jan Philipp Knller <info@pksoftware.de>
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * Released under Apache2 license: http://www.apache.org/licenses/LICENSE-2.0.txt
 * 
 */

package de.pksoftware.springstrap.core.config;

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

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup;
import org.springframework.jndi.JndiObjectFactoryBean;

@Configuration
public abstract class JndiRdbmsConfigBase extends RdbmsConfigBase {

    @Value("${rdbms.datasource.jndi.uri:}")
    protected String jndiDataSourceUri;

    /**
     * Returns the JNDI Data Source URI.
     * @return
     */
    protected String getJndiDataSourceUri() {
        if (null != jndiDataSourceUri && !jndiDataSourceUri.isEmpty()) {
            return jndiDataSourceUri;
        }

        throw new RuntimeException(
                "Either set a property 'rdbms.datasource.jndi.uri' inside your server.properties file, or overwrite getJndiDataSourceUri() in your RdbmsConfig.");
    }

    /**
      * Creates the DataSource.
      * @return
     * @throws NamingException 
     * @throws IllegalArgumentException 
      */
    protected DataSource dataSource() {

        final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(true);

        DataSource dataSource = dsLookup.getDataSource(getJndiDataSourceUri());

        /*
        JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
         bean.setJndiName(getJndiDataSourceUri());
         bean.setProxyInterface(DataSource.class);
         bean.setLookupOnStartup(false);
         try{
            bean.afterPropertiesSet();
         }
         catch(Exception ex){
             
         }
         DataSource dataSource = (DataSource)bean.getObject();
         */

        return dataSource;
    }
}