Package org.hibernate.ejb.util

Source Code of org.hibernate.ejb.util.NamingHelper

/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors.  All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* 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 distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA  02110-1301  USA
*/
package org.hibernate.ejb.util;

import javax.naming.event.NamespaceChangeListener;
import javax.naming.event.NamingEvent;
import javax.naming.event.NamingExceptionEvent;

import org.jboss.logging.Logger;

import org.hibernate.ejb.AvailableSettings;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.ejb.internal.EntityManagerMessageLogger;
import org.hibernate.service.jndi.JndiException;
import org.hibernate.service.jndi.JndiNameException;
import org.hibernate.service.jndi.internal.JndiServiceImpl;

/**
* @author Emmanuel Bernard
*/
public class NamingHelper {
  private NamingHelper() {}

    private static final EntityManagerMessageLogger LOG = Logger.getMessageLogger(EntityManagerMessageLogger.class, NamingHelper.class.getName());

  public static void bind(Ejb3Configuration cfg) {
    String name = cfg.getHibernateConfiguration().getProperty( AvailableSettings.CONFIGURATION_JNDI_NAME );
        if ( name == null ) {
      LOG.debug( "No JNDI name configured for binding Ejb3Configuration" );
    }
    else {
            LOG.ejb3ConfigurationName( name );

      // todo : instantiating the JndiService here is temporary until HHH-6159 is resolved.
      JndiServiceImpl jndiService = new JndiServiceImpl( cfg.getProperties() );
      try {
        jndiService.bind( name, cfg );
        LOG.boundEjb3ConfigurationToJndiName( name );
        try {
          jndiService.addListener( name, LISTENER );
        }
        catch (Exception e) {
          LOG.couldNotBindJndiListener();
        }
      }
      catch (JndiNameException e) {
        LOG.invalidJndiName( name, e );
      }
      catch (JndiException e) {
        LOG.unableToBindEjb3ConfigurationToJndi( e );
      }
    }
  }

  private static final NamespaceChangeListener LISTENER = new NamespaceChangeListener() {
    public void objectAdded(NamingEvent evt) {
            LOG.debugf("An Ejb3Configuration was successfully bound to name: %s", evt.getNewBinding().getName());
    }

    public void objectRemoved(NamingEvent evt) {
      String name = evt.getOldBinding().getName();
            LOG.ejb3ConfigurationUnboundFromName(name);
    }

    public void objectRenamed(NamingEvent evt) {
      String name = evt.getOldBinding().getName();
            LOG.ejb3ConfigurationRenamedFromName(name);
    }

    public void namingExceptionThrown(NamingExceptionEvent evt) {
            LOG.unableToAccessEjb3Configuration(evt.getException());
    }
  };


}
TOP

Related Classes of org.hibernate.ejb.util.NamingHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.