use of org.hibernate.engine.jndi.JndiException in project hibernate-orm by hibernate.
the class JndiServiceImpl method addListener.
@Override
public void addListener(String jndiName, NamespaceChangeListener listener) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
((EventContext) initialContext).addNamingListener(name, EventContext.OBJECT_SCOPE, listener);
} catch (Exception e) {
throw new JndiException("Unable to bind listener to namespace [" + name + "]", e);
} finally {
cleanUp(initialContext);
}
}
use of org.hibernate.engine.jndi.JndiException in project hibernate-orm by hibernate.
the class JndiServiceImpl method bind.
private void bind(Name name, Object value, Context context) {
try {
LOG.tracef("Binding : %s", name);
context.rebind(name, value);
} catch (Exception initialException) {
// We had problems doing a simple bind operation.
if (name.size() == 1) {
// if the jndi name had only 1 component there is nothing more we can do...
throw new JndiException("Error performing bind [" + name + "]", initialException);
}
// Otherwise, there is a good chance this may have been caused by missing intermediate contexts. So we
// attempt to create those missing intermediate contexts and bind again
Context intermediateContextBase = context;
while (name.size() > 1) {
final String intermediateContextName = name.get(0);
Context intermediateContext = null;
try {
LOG.tracev("Intermediate lookup: {0}", intermediateContextName);
intermediateContext = (Context) intermediateContextBase.lookup(intermediateContextName);
} catch (NameNotFoundException handledBelow) {
// ok as we will create it below if not found
} catch (NamingException e) {
throw new JndiException("Unanticipated error doing intermediate lookup", e);
}
if (intermediateContext != null) {
LOG.tracev("Found intermediate context: {0}", intermediateContextName);
} else {
LOG.tracev("Creating sub-context: {0}", intermediateContextName);
try {
intermediateContext = intermediateContextBase.createSubcontext(intermediateContextName);
} catch (NamingException e) {
throw new JndiException("Error creating intermediate context [" + intermediateContextName + "]", e);
}
}
intermediateContextBase = intermediateContext;
name = name.getSuffix(1);
}
LOG.tracev("Binding : {0}", name);
try {
intermediateContextBase.rebind(name, value);
} catch (NamingException e) {
throw new JndiException("Error performing intermediate bind [" + name + "]", e);
}
}
LOG.debugf("Bound name: %s", name);
}
use of org.hibernate.engine.jndi.JndiException in project hibernate-orm by hibernate.
the class JndiServiceImpl method locate.
@Override
public Object locate(String jndiName) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
return initialContext.lookup(name);
} catch (NamingException e) {
throw new JndiException("Unable to lookup JNDI name [" + jndiName + "]", e);
} finally {
cleanUp(initialContext);
}
}
use of org.hibernate.engine.jndi.JndiException in project hibernate-orm by hibernate.
the class JndiServiceImpl method unbind.
@Override
public void unbind(String jndiName) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
initialContext.unbind(name);
} catch (Exception e) {
throw new JndiException("Error performing unbind [" + name + "]", e);
} finally {
cleanUp(initialContext);
}
}
Aggregations