Search in sources :

Example 41 with StringRefAddr

use of javax.naming.StringRefAddr in project Payara by payara.

the class CustomResourceDeployer method installCustomResource.

/**
 * Installs the given custom resource. It publishes the resource as a
 * javax.naming.Reference with the naming manager (jndi). This method gets
 * called during server initialization and custom resource deployer to
 * handle custom resource events.
 *
 * @param customRes custom resource
 * @param resourceInfo
 */
public void installCustomResource(org.glassfish.resources.beans.CustomResource customRes, ResourceInfo resourceInfo) {
    try {
        if (_logger.isLoggable(Level.FINE)) {
            _logger.log(Level.FINE, "installCustomResource by jndi-name : " + resourceInfo);
        }
        // bind a Reference to the object factory
        Reference ref = new Reference(customRes.getResType(), customRes.getFactoryClass(), null);
        // add resource properties as StringRefAddrs
        for (Iterator props = customRes.getProperties().iterator(); props.hasNext(); ) {
            ResourceProperty prop = (ResourceProperty) props.next();
            ref.add(new StringRefAddr(prop.getName(), (String) prop.getValue()));
        }
        // publish the reference
        cns.publishObject(resourceInfo, ref, true);
    } catch (Exception ex) {
        _logger.log(Level.SEVERE, "customrsrc.create_ref_error", resourceInfo);
        _logger.log(Level.SEVERE, "customrsrc.create_ref_error_excp", ex);
    }
}
Also used : ResourceProperty(com.sun.enterprise.repository.ResourceProperty) StringRefAddr(javax.naming.StringRefAddr) Reference(javax.naming.Reference) Iterator(java.util.Iterator) NamingException(javax.naming.NamingException) ResourceConflictException(org.glassfish.resourcebase.resources.api.ResourceConflictException)

Example 42 with StringRefAddr

use of javax.naming.StringRefAddr in project Payara by payara.

the class SafeProperties method initializeHome.

/**
 * Called from the ContainerFactory during initialization.
 */
protected void initializeHome() throws Exception {
    if (isWebServiceEndpoint) {
        EjbBundleDescriptorImpl bundle = ejbDescriptor.getEjbBundleDescriptor();
        WebServicesDescriptor webServices = bundle.getWebServices();
        Collection myEndpoints = webServices.getEndpointsImplementedBy(ejbDescriptor);
        // An ejb can only be exposed through 1 web service endpoint
        Iterator iter = myEndpoints.iterator();
        webServiceEndpoint = (com.sun.enterprise.deployment.WebServiceEndpoint) iter.next();
        Class serviceEndpointIntfClass = loader.loadClass(webServiceEndpoint.getServiceEndpointInterface());
        if (!serviceEndpointIntfClass.isInterface()) {
            ServiceInterfaceGenerator generator = new ServiceInterfaceGenerator(loader, ejbClass);
            serviceEndpointIntfClass = EJBUtils.generateSEI(generator, generator.getGeneratedClass(), loader, this.ejbClass);
            if (serviceEndpointIntfClass == null) {
                throw new RuntimeException(localStrings.getLocalString("ejb.error_generating_sei", "Error in generating service endpoint interface class for EJB class {0}", this.ejbClass));
            }
        }
        Class tieClass = null;
        WebServiceInvocationHandler invocationHandler = new WebServiceInvocationHandler(ejbClass, webServiceEndpoint, serviceEndpointIntfClass, ejbContainerUtilImpl, webServiceInvocationInfoMap);
        invocationHandler.setContainer(this);
        Object servant = (Object) Proxy.newProxyInstance(loader, new Class[] { serviceEndpointIntfClass }, invocationHandler);
        // starting in 2.0, there is no more generated Ties
        if (webServiceEndpoint.getTieClassName() != null) {
            tieClass = loader.loadClass(webServiceEndpoint.getTieClassName());
        }
        // Create a facade for container services to be used by web services runtime.
        EjbEndpointFacade endpointFacade = new EjbEndpointFacadeImpl(this, ejbContainerUtilImpl);
        wsejbEndpointRegistry = Globals.getDefaultHabitat().getService(WSEjbEndpointRegistry.class);
        if (wsejbEndpointRegistry != null) {
            wsejbEndpointRegistry.registerEndpoint(webServiceEndpoint, endpointFacade, servant, tieClass);
        } else {
            throw new DeploymentException(localStrings.getLocalString("ejb.no_webservices_module", "EJB-based Webservice endpoint is detected but there is no webservices module installed to handle it"));
        }
    }
    Map<String, Object> intfsForPortableJndi = new HashMap<String, Object>();
    // Root of portable global JNDI name for this bean
    String javaGlobalName = getJavaGlobalJndiNamePrefix();
    if (isRemote) {
        boolean disableNonPortableJndiName = false;
        Boolean disableInDD = ejbDescriptor.getEjbBundleDescriptor().getDisableNonportableJndiNames();
        if (disableInDD != null) {
            // explicitly set in glassfish-ejb-jar.xml
            disableNonPortableJndiName = disableInDD;
        } else {
            String disableInServer = ejbContainerUtilImpl.getEjbContainer().getPropertyValue(RuntimeTagNames.DISABLE_NONPORTABLE_JNDI_NAMES);
            disableNonPortableJndiName = Boolean.valueOf(disableInServer);
        }
        String glassfishSpecificJndiName = null;
        if (!disableNonPortableJndiName) {
            // This is either the default glassfish-specific (non-portable)
            // global JNDI name or the one specified via mappedName(), sun-ejb-jar.xml,
            // etc.
            glassfishSpecificJndiName = ejbDescriptor.getJndiName();
            // clashes.
            if ((glassfishSpecificJndiName != null) && (glassfishSpecificJndiName.equals("") || glassfishSpecificJndiName.equals(javaGlobalName))) {
                glassfishSpecificJndiName = null;
            }
        }
        if (hasRemoteHomeView) {
            this.ejbHomeImpl = instantiateEJBHomeImpl();
            this.ejbHome = ejbHomeImpl.getEJBHome();
            // Since some containers might create multiple EJBObjects for
            // the same ejb, make sure we use the same Proxy class to
            // instantiate all the proxy instances.
            ejbObjectProxyClass = Proxy.getProxyClass(loader, new Class[] { remoteIntf });
            ejbObjectProxyCtor = ejbObjectProxyClass.getConstructor(new Class[] { InvocationHandler.class });
            // 
            // Make sure all Home/Remote interfaces conform to RMI-IIOP
            // rules.  Checking for conformance here keeps the exposed
            // deployment/startup error behavior consistent since when
            // rmic is used during codegen it makes equivalent checks and
            // treats any validation problems as fatal errors.
            // 
            // These same checks will be made when setTarget is called
            // in POARemoteReferenceFactory.preinvoke, but that happens
            // only when the actual invocation is made, so it's better to
            // know at container initialization time if there is a problem.
            // 
            getProtocolManager().validateTargetObjectInterfaces(this.ejbHome);
            // Unlike the Home, each of the concrete containers are
            // responsible for creating the EJBObjects, so just create
            // a dummy EJBObjectImpl for validation purposes.
            EJBObjectImpl dummyEJBObjectImpl = instantiateEJBObjectImpl();
            EJBObject dummyEJBObject = (EJBObject) dummyEJBObjectImpl.getEJBObject();
            getProtocolManager().validateTargetObjectInterfaces(dummyEJBObject);
            // Remotereference factory needs instances of
            // Home and Remote to get repository Ids since it doesn't have
            // stubs and ties.  This must be done before any Home or Remote
            // references are created.
            remoteHomeRefFactory.setRepositoryIds(homeIntf, remoteIntf);
            // get a remote ref for the EJBHome
            ejbHomeStub = (EJBHome) remoteHomeRefFactory.createHomeReference(homeInstanceKey);
            // Add 2.x Home for later portable JNDI name processing.
            intfsForPortableJndi.put(ejbDescriptor.getHomeClassName(), ejbHomeStub);
            // this was the original use of the jndi name.
            if (glassfishSpecificJndiName != null) {
                JndiInfo jndiInfo = JndiInfo.newNonPortableRemote(glassfishSpecificJndiName, ejbHomeStub);
                jndiInfoMap.put(jndiInfo.name, jndiInfo);
            }
        }
        if (hasRemoteBusinessView) {
            this.ejbRemoteBusinessHomeImpl = instantiateEJBRemoteBusinessHomeImpl();
            this.ejbRemoteBusinessHome = ejbRemoteBusinessHomeImpl.getEJBHome();
            // RMI-IIOP validation
            getProtocolManager().validateTargetObjectInterfaces(this.ejbRemoteBusinessHome);
            for (RemoteBusinessIntfInfo next : remoteBusinessIntfInfo.values()) {
                next.proxyClass = Proxy.getProxyClass(loader, new Class[] { next.generatedRemoteIntf });
                next.proxyCtor = next.proxyClass.getConstructor(new Class[] { InvocationHandler.class });
                // Remotereference factory needs instances of
                // Home and Remote to get repository Ids since it
                // doesn't have stubs and ties.  This must be done before
                // any Home or Remote references are created.
                next.referenceFactory.setRepositoryIds(remoteBusinessHomeIntf, next.generatedRemoteIntf);
                // selected, so just do it the first time through the loop.
                if (ejbRemoteBusinessHomeStub == null) {
                    ejbRemoteBusinessHomeStub = (EJBHome) next.referenceFactory.createHomeReference(homeInstanceKey);
                }
            }
            EJBObjectImpl dummyEJBObjectImpl = instantiateRemoteBusinessObjectImpl();
            // Internal jndi name under which remote business home is registered for
            // glassfish-specific remote business JNDI names
            String remoteBusinessHomeJndiName = null;
            if (glassfishSpecificJndiName != null) {
                remoteBusinessHomeJndiName = EJBUtils.getRemote30HomeJndiName(glassfishSpecificJndiName);
            }
            // Convenience location for common case of 3.0 session bean with only
            // 1 remote business interface and no adapted remote home.  Allows a
            // stand-alone client to access 3.0 business interface by using simple
            // jndi name.  Each remote business interface is also always available
            // at <jndi-name>#<business_interface_name>.  This is needed for the
            // case where the bean has an adapted remote home and/or multiple business
            // interfaces.
            String simpleRemoteBusinessJndiName = null;
            if ((glassfishSpecificJndiName != null) && !hasRemoteHomeView && remoteBusinessIntfInfo.size() == 1) {
                simpleRemoteBusinessJndiName = glassfishSpecificJndiName;
            }
            // We need a separate name for the internal generated home object to
            // support the portable global JNDI names for business interfaces.
            // There won't necessarily be a glassfish-specific name specified so
            // it's cleaner to just always use a separate ones.
            String internalHomeJndiNameForPortableRemoteNames = EJBUtils.getRemote30HomeJndiName(javaGlobalName);
            for (RemoteBusinessIntfInfo next : remoteBusinessIntfInfo.values()) {
                java.rmi.Remote dummyEJBObject = dummyEJBObjectImpl.getEJBObject(next.generatedRemoteIntf.getName());
                getProtocolManager().validateTargetObjectInterfaces(dummyEJBObject);
                if (glassfishSpecificJndiName != null) {
                    next.jndiName = EJBUtils.getRemoteEjbJndiName(true, next.remoteBusinessIntf.getName(), glassfishSpecificJndiName);
                    Reference remoteBusRef = new Reference(next.remoteBusinessIntf.getName(), new StringRefAddr("url", remoteBusinessHomeJndiName), "com.sun.ejb.containers.RemoteBusinessObjectFactory", null);
                    // Glassfish-specific JNDI name for fully-qualified 3.0 Remote business interface.
                    JndiInfo jndiInfo = JndiInfo.newNonPortableRemote(next.jndiName, remoteBusRef);
                    jndiInfoMap.put(jndiInfo.name, jndiInfo);
                }
                if (simpleRemoteBusinessJndiName != null) {
                    Reference remoteBusRef = new Reference(next.remoteBusinessIntf.getName(), new StringRefAddr("url", remoteBusinessHomeJndiName), "com.sun.ejb.containers.RemoteBusinessObjectFactory", null);
                    // Glassfish-specific JNDI name for simple 3.0 Remote business interface lookup.
                    // Applicable when the bean exposes only a single Remote 3.x client view.
                    JndiInfo jndiInfo = JndiInfo.newNonPortableRemote(simpleRemoteBusinessJndiName, remoteBusRef);
                    jndiInfoMap.put(jndiInfo.name, jndiInfo);
                }
                Reference remoteBusRef = new Reference(next.remoteBusinessIntf.getName(), new StringRefAddr("url", internalHomeJndiNameForPortableRemoteNames), "com.sun.ejb.containers.RemoteBusinessObjectFactory", null);
                // Always register portable JNDI name for each remote business view
                intfsForPortableJndi.put(next.remoteBusinessIntf.getName(), remoteBusRef);
            }
            if (remoteBusinessHomeJndiName != null) {
                // Glassfish-specific JNDI name for internal generated
                // home object used by container
                JndiInfo jndiInfo = JndiInfo.newNonPortableRemote(remoteBusinessHomeJndiName, ejbRemoteBusinessHomeStub);
                jndiInfo.setInternal(true);
                jndiInfoMap.put(jndiInfo.name, jndiInfo);
            }
            // Always registeer internal name for home in support of portable global
            // remote business JNDI names.
            JndiInfo jndiInfo = JndiInfo.newPortableRemote(internalHomeJndiNameForPortableRemoteNames, ejbRemoteBusinessHomeStub);
            jndiInfo.setInternal(true);
            jndiInfoMap.put(jndiInfo.name, jndiInfo);
            // lookup logic that depends on ejbDescriptor.getJndiName() will work.
            if (glassfishSpecificJndiName == null) {
                ejbDescriptor.setJndiName(javaGlobalName);
            }
        }
    }
    if (isLocal) {
        if (hasLocalHomeView) {
            this.ejbLocalHomeImpl = instantiateEJBLocalHomeImpl();
            this.ejbLocalHome = ejbLocalHomeImpl.getEJBLocalHome();
            // Since some containers might create multiple EJBLocalObjects
            // for the same ejb, make sure we use the same Proxy class to
            // instantiate all the proxy instances.
            Class ejbLocalObjectProxyClass = Proxy.getProxyClass(loader, new Class[] { IndirectlySerializable.class, localIntf });
            ejbLocalObjectProxyCtor = ejbLocalObjectProxyClass.getConstructor(new Class[] { InvocationHandler.class });
            // Portable JNDI name for EJB 2.x LocalHome.  We don't provide a
            // glassfish-specific way of accessing Local EJBs.
            JavaGlobalJndiNamingObjectProxy namingProxy = new JavaGlobalJndiNamingObjectProxy(this, localHomeIntf.getName());
            intfsForPortableJndi.put(localHomeIntf.getName(), namingProxy);
        }
        if (hasLocalBusinessView) {
            ejbLocalBusinessHomeImpl = instantiateEJBLocalBusinessHomeImpl();
            ejbLocalBusinessHome = (GenericEJBLocalHome) ejbLocalBusinessHomeImpl.getEJBLocalHome();
            Class[] proxyInterfaces = new Class[localBusinessIntfs.size() + 1];
            proxyInterfaces[0] = IndirectlySerializable.class;
            int index = 1;
            for (Class next : localBusinessIntfs) {
                proxyInterfaces[index] = next;
                index++;
            }
            Class proxyClass = Proxy.getProxyClass(loader, proxyInterfaces);
            ejbLocalBusinessObjectProxyCtor = proxyClass.getConstructor(new Class[] { InvocationHandler.class });
            for (Class next : localBusinessIntfs) {
                // Portable JNDI name for EJB 3.x Local business interface.
                // We don't provide a glassfish-specific way of accessing Local EJBs.
                JavaGlobalJndiNamingObjectProxy namingProxy = new JavaGlobalJndiNamingObjectProxy(this, next.getName());
                intfsForPortableJndi.put(next.getName(), namingProxy);
            }
        }
        if (hasOptionalLocalBusinessView) {
            EJBLocalHomeImpl obj = instantiateEJBOptionalLocalBusinessHomeImpl();
            ejbOptionalLocalBusinessHomeImpl = (EJBLocalHomeImpl) obj;
            ejbOptionalLocalBusinessHome = (GenericEJBLocalHome) ejbOptionalLocalBusinessHomeImpl.getEJBLocalHome();
            Class[] proxyInterfaces = new Class[2];
            proxyInterfaces[0] = IndirectlySerializable.class;
            String optionalIntfName = EJBUtils.getGeneratedOptionalInterfaceName(ejbClass.getName());
            proxyInterfaces[1] = ejbGeneratedOptionalLocalBusinessIntfClass = optIntfClassLoader.loadClass(optionalIntfName);
            Class proxyClass = Proxy.getProxyClass(loader, proxyInterfaces);
            ejbOptionalLocalBusinessObjectProxyCtor = proxyClass.getConstructor(new Class[] { InvocationHandler.class });
            // Portable JNDI name for no-interface view.
            // We don't provide a glassfish-specific way of accessing the
            // no-interface view of a session bean.
            JavaGlobalJndiNamingObjectProxy namingProxy = new JavaGlobalJndiNamingObjectProxy(this, ejbClass.getName());
            intfsForPortableJndi.put(ejbClass.getName(), namingProxy);
        }
    }
    for (Map.Entry<String, Object> entry : intfsForPortableJndi.entrySet()) {
        String intf = entry.getKey();
        String fullyQualifiedJavaGlobalName = javaGlobalName + "!" + intf;
        Object namingProxy = entry.getValue();
        boolean local = (namingProxy instanceof JavaGlobalJndiNamingObjectProxy);
        if (intfsForPortableJndi.size() == 1) {
            JndiInfo jndiInfo = local ? JndiInfo.newPortableLocal(javaGlobalName, namingProxy) : JndiInfo.newPortableRemote(javaGlobalName, namingProxy);
            jndiInfoMap.put(jndiInfo.name, jndiInfo);
        }
        JndiInfo jndiInfo = local ? JndiInfo.newPortableLocal(fullyQualifiedJavaGlobalName, namingProxy) : JndiInfo.newPortableRemote(fullyQualifiedJavaGlobalName, namingProxy);
        jndiInfoMap.put(jndiInfo.name, jndiInfo);
    }
    for (Map.Entry<String, JndiInfo> entry : jndiInfoMap.entrySet()) {
        JndiInfo jndiInfo = entry.getValue();
        try {
            jndiInfo.publish(this.namingManager);
            if (jndiInfo.internal) {
                publishedInternalGlobalJndiNames.add(jndiInfo.name);
            } else {
                if (jndiInfo.portable) {
                    publishedPortableGlobalJndiNames.add(jndiInfo.name);
                } else {
                    publishedNonPortableGlobalJndiNames.add(jndiInfo.name);
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(localStrings.getLocalString("ejb.error_binding_jndi_name", "Error while binding JNDI name {0} for EJB {1}", jndiInfo.name, this.ejbDescriptor.getName()), e);
        }
    }
    if (!publishedPortableGlobalJndiNames.isEmpty()) {
        _logger.log(Level.INFO, PORTABLE_JNDI_NAMES, new Object[] { this.ejbDescriptor.getName(), publishedPortableGlobalJndiNames });
    }
    if (!publishedNonPortableGlobalJndiNames.isEmpty()) {
        _logger.log(Level.INFO, GLASSFISH_SPECIFIC_JNDI_NAMES, new Object[] { this.ejbDescriptor.getName(), publishedNonPortableGlobalJndiNames });
    }
    if (!publishedInternalGlobalJndiNames.isEmpty()) {
        _logger.log(Level.FINE, "Internal container JNDI names for EJB {0}: {1}", new Object[] { this.ejbDescriptor.getName(), publishedInternalGlobalJndiNames });
    }
    // set EJBMetaData
    setEJBMetaData();
}
Also used : ServiceInterfaceGenerator(com.sun.ejb.codegen.ServiceInterfaceGenerator) HashMap(java.util.HashMap) EjbEndpointFacade(org.glassfish.ejb.api.EjbEndpointFacade) WSEjbEndpointRegistry(org.glassfish.ejb.spi.WSEjbEndpointRegistry) EJBObject(javax.ejb.EJBObject) Iterator(java.util.Iterator) com.sun.enterprise.deployment(com.sun.enterprise.deployment) Reference(javax.naming.Reference) InvocationHandler(java.lang.reflect.InvocationHandler) TransactionRequiredLocalException(javax.ejb.TransactionRequiredLocalException) EJBAccessException(javax.ejb.EJBAccessException) InvocationTargetException(java.lang.reflect.InvocationTargetException) EJBException(javax.ejb.EJBException) DeploymentException(org.glassfish.deployment.common.DeploymentException) AccessException(java.rmi.AccessException) AccessLocalException(javax.ejb.AccessLocalException) TransactionRolledbackLocalException(javax.ejb.TransactionRolledbackLocalException) SystemException(javax.transaction.SystemException) NoSuchEJBException(javax.ejb.NoSuchEJBException) NamingException(javax.naming.NamingException) RemoveException(javax.ejb.RemoveException) EJBTransactionRequiredException(javax.ejb.EJBTransactionRequiredException) EJBTransactionRolledbackException(javax.ejb.EJBTransactionRolledbackException) RemoteException(java.rmi.RemoteException) RollbackException(javax.transaction.RollbackException) FinderException(javax.ejb.FinderException) CreateException(javax.ejb.CreateException) NoSuchObjectLocalException(javax.ejb.NoSuchObjectLocalException) StringRefAddr(javax.naming.StringRefAddr) Collection(java.util.Collection) EJBLocalObject(javax.ejb.EJBLocalObject) EJBObject(javax.ejb.EJBObject) DeploymentException(org.glassfish.deployment.common.DeploymentException) Map(java.util.Map) MethodMap(com.sun.ejb.containers.util.MethodMap) HashMap(java.util.HashMap)

Example 43 with StringRefAddr

use of javax.naming.StringRefAddr in project datanucleus-rdbms by datanucleus.

the class PerUserPoolDataSource method getReference.

/**
 * Returns a <code>PerUserPoolDataSource</code> {@link Reference}.
 */
@Override
public Reference getReference() throws NamingException {
    Reference ref = new Reference(getClass().getName(), PerUserPoolDataSourceFactory.class.getName(), null);
    ref.add(new StringRefAddr("instanceKey", getInstanceKey()));
    return ref;
}
Also used : StringRefAddr(javax.naming.StringRefAddr) Reference(javax.naming.Reference)

Example 44 with StringRefAddr

use of javax.naming.StringRefAddr in project derby by apache.

the class EmbeddedDataSource method addBeanProperties.

/**
 * Add Java Bean properties to the reference using
 * StringRefAddr for each property. List of bean properties
 * is defined from the public getXXX() methods on this object
 * that take no arguments and return short, int, boolean or String.
 * The {@link StringRefAddr} has a key of the Java bean property name,
 * converted from the method name. E.g. traceDirectory for
 * traceDirectory.
 *
 * @param ths {@code this} object
 * @param ref The reference to add properties to
 */
private static void addBeanProperties(Object ths, Reference ref) {
    // Look for all the getXXX methods in the class that take no arguments.
    Method[] methods = ths.getClass().getMethods();
    for (Method m : methods) {
        // only look for simple getter methods.
        if (m.getParameterTypes().length != 0)
            continue;
        // only non-static methods
        if (Modifier.isStatic(m.getModifiers()))
            continue;
        // Only getXXX methods
        String methodName = m.getName();
        if ((methodName.length() < 5) || !methodName.startsWith("get"))
            continue;
        Class<?> returnType = m.getReturnType();
        if (Integer.TYPE.equals(returnType) || Short.TYPE.equals(returnType) || String.class.equals(returnType) || Boolean.TYPE.equals(returnType)) {
            // setSomeProperty
            // 01234
            String propertyName = methodName.substring(3, 4).toLowerCase(java.util.Locale.ENGLISH).concat(methodName.substring(4));
            try {
                Object ov = m.invoke(ths, (Object[]) null);
                // "null" string gets stored.
                if (ov != null) {
                    ref.add(new StringRefAddr(propertyName, ov.toString()));
                }
            } catch (IllegalAccessException iae) {
            } catch (InvocationTargetException ite) {
            }
        }
    }
}
Also used : StringRefAddr(javax.naming.StringRefAddr) Method(java.lang.reflect.Method) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 45 with StringRefAddr

use of javax.naming.StringRefAddr in project tomcat70 by apache.

the class NamingContextListener method addResourceEnvRef.

/**
 * Set the specified resources in the naming context.
 */
public void addResourceEnvRef(ContextResourceEnvRef resourceEnvRef) {
    // Create a reference to the resource env.
    Reference ref = new ResourceEnvRef(resourceEnvRef.getType());
    // Adding the additional parameters, if any
    Iterator<String> params = resourceEnvRef.listProperties();
    while (params.hasNext()) {
        String paramName = params.next();
        String paramValue = (String) resourceEnvRef.getProperty(paramName);
        StringRefAddr refAddr = new StringRefAddr(paramName, paramValue);
        ref.add(refAddr);
    }
    try {
        if (logger.isDebugEnabled())
            log.debug("  Adding resource env ref " + resourceEnvRef.getName());
        createSubcontexts(envCtx, resourceEnvRef.getName());
        envCtx.bind(resourceEnvRef.getName(), ref);
    } catch (NamingException e) {
        logger.error(sm.getString("naming.bindFailed", e));
    }
}
Also used : StringRefAddr(javax.naming.StringRefAddr) Reference(javax.naming.Reference) NamingException(javax.naming.NamingException) ResourceEnvRef(org.apache.naming.ResourceEnvRef) ContextResourceEnvRef(org.apache.catalina.deploy.ContextResourceEnvRef)

Aggregations

StringRefAddr (javax.naming.StringRefAddr)67 Reference (javax.naming.Reference)51 NamingException (javax.naming.NamingException)18 RefAddr (javax.naming.RefAddr)9 Test (org.junit.Test)8 Name (javax.naming.Name)7 Properties (java.util.Properties)6 HashMap (java.util.HashMap)5 Iterator (java.util.Iterator)5 CompositeName (javax.naming.CompositeName)5 NameAlreadyBoundException (javax.naming.NameAlreadyBoundException)5 ObjectFactory (javax.naming.spi.ObjectFactory)5 MalformedURLException (java.net.MalformedURLException)4 Enumeration (java.util.Enumeration)4 Hashtable (java.util.Hashtable)4 Map (java.util.Map)4 Context (javax.naming.Context)4 NameNotFoundException (javax.naming.NameNotFoundException)3 Context (org.apache.catalina.Context)3 NamingContext (org.apache.naming.NamingContext)3