use of org.jboss.as.naming.ContextListAndJndiViewManagedReferenceFactory in project wildfly by wildfly.
the class NamingBindingAdd method installObjectFactory.
void installObjectFactory(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException {
final ObjectFactory objectFactoryClassInstance = createObjectFactory(context, model);
final Hashtable<String, String> environment = getObjectFactoryEnvironment(context, model);
ContextListAndJndiViewManagedReferenceFactory factory = new ObjectFactoryManagedReference(objectFactoryClassInstance, name, environment);
final ServiceTarget serviceTarget = context.getServiceTarget();
final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(name);
final BinderService binderService = new BinderService(name, objectFactoryClassInstance);
binderService.getManagedObjectInjector().inject(new MutableManagedReferenceFactory(factory));
serviceTarget.addService(bindInfo.getBinderServiceName(), binderService).addDependency(bindInfo.getParentContextServiceName(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector()).install();
}
use of org.jboss.as.naming.ContextListAndJndiViewManagedReferenceFactory in project wildfly by wildfly.
the class NamingBindingAdd method installExternalContext.
void installExternalContext(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException {
final String moduleID = NamingBindingResourceDefinition.MODULE.resolveModelAttribute(context, model).asString();
final String className = NamingBindingResourceDefinition.CLASS.resolveModelAttribute(context, model).asString();
final ModelNode cacheNode = NamingBindingResourceDefinition.CACHE.resolveModelAttribute(context, model);
boolean cache = cacheNode.isDefined() ? cacheNode.asBoolean() : false;
final ObjectFactory objectFactoryClassInstance = new ExternalContextObjectFactory();
final ServiceTarget serviceTarget = context.getServiceTarget();
final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(name);
final Hashtable<String, String> environment = getObjectFactoryEnvironment(context, model);
environment.put(ExternalContextObjectFactory.CACHE_CONTEXT, Boolean.toString(cache));
environment.put(ExternalContextObjectFactory.INITIAL_CONTEXT_CLASS, className);
environment.put(ExternalContextObjectFactory.INITIAL_CONTEXT_MODULE, moduleID);
final ExternalContextBinderService binderService = new ExternalContextBinderService(name, objectFactoryClassInstance);
binderService.getManagedObjectInjector().inject(new ContextListAndJndiViewManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
final Object value = objectFactoryClassInstance.getObjectInstance(name, null, null, environment);
return new ImmediateManagedReference(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public String getInstanceClassName() {
return className;
}
@Override
public String getJndiViewInstanceValue() {
final ClassLoader cl = WildFlySecurityManager.getCurrentContextClassLoaderPrivileged();
try {
WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(objectFactoryClassInstance.getClass().getClassLoader());
return String.valueOf(getReference().getInstance());
} finally {
WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(cl);
}
}
});
serviceTarget.addService(bindInfo.getBinderServiceName(), binderService).addDependency(bindInfo.getParentContextServiceName(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector()).addDependency(ExternalContextsService.SERVICE_NAME, ExternalContexts.class, binderService.getExternalContextsInjector()).install();
}
use of org.jboss.as.naming.ContextListAndJndiViewManagedReferenceFactory in project wildfly by wildfly.
the class JMSDestinationDefinitionInjectionSource method inject.
private <D extends Destination> void inject(ServiceBuilder<?> serviceBuilder, Injector<ManagedReferenceFactory> injector, Service<D> destinationService) {
final ContextListAndJndiViewManagedReferenceFactory referenceFactoryService = new MessagingJMSDestinationManagedReferenceFactory(destinationService);
serviceBuilder.addInjection(injector, referenceFactoryService).addListener(new AbstractServiceListener<Object>() {
public void transition(final ServiceController<? extends Object> controller, final ServiceController.Transition transition) {
switch(transition) {
case STARTING_to_UP:
{
ROOT_LOGGER.boundJndiName(jndiName);
break;
}
case START_REQUESTED_to_DOWN:
{
ROOT_LOGGER.unboundJndiName(jndiName);
break;
}
case REMOVING_to_REMOVED:
{
ROOT_LOGGER.debugf("Removed messaging object [%s]", jndiName);
break;
}
}
}
});
}
Aggregations