Search in sources :

Example 6 with ContextResourceEnvRef

use of org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef in project tomee by apache.

the class TomcatJndiBuilder method isLookupRef.

private boolean isLookupRef(final NamingResourcesImpl naming, final InjectableInfo ref) {
    if (ref.location == null) {
        return false;
    }
    if (ref.location.jndiName == null) {
        return false;
    }
    if (!ref.location.jndiName.startsWith("java:")) {
        return false;
    }
    final ContextResourceEnvRef lookup = new ContextResourceEnvRef();
    lookup.setName(ref.referenceName.replaceAll("^comp/env/", ""));
    lookup.setProperty(Constants.FACTORY, LookupFactory.class.getName());
    lookup.setProperty(NamingUtil.JNDI_NAME, ref.location.jndiName);
    lookup.setType(Object.class.getName());
    lookup.setOverride(false);
    naming.addResourceEnvRef(lookup);
    return true;
}
Also used : LookupFactory(org.apache.tomee.common.LookupFactory) ContextResourceEnvRef(org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef)

Example 7 with ContextResourceEnvRef

use of org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef in project tomee by apache.

the class OpenEJBNamingContextListener method processInitialNamingResources.

private void processInitialNamingResources() {
    // Resource links
    final ContextResourceLink[] resourceLinks = namingResources.findResourceLinks();
    for (final ContextResourceLink resourceLink : resourceLinks) {
        addResourceLink(resourceLink);
    }
    // Resources
    final ContextResource[] resources = namingResources.findResources();
    for (final ContextResource resource : resources) {
        addResource(resource);
    }
    // Resources Env
    final ContextResourceEnvRef[] resourceEnvRefs = namingResources.findResourceEnvRefs();
    for (final ContextResourceEnvRef resourceEnvRef : resourceEnvRefs) {
        addResourceEnvRef(resourceEnvRef);
    }
    // Environment entries
    final ContextEnvironment[] contextEnvironments = namingResources.findEnvironments();
    for (final ContextEnvironment contextEnvironment : contextEnvironments) {
        addEnvironment(contextEnvironment);
    }
    // EJB references
    final ContextEjb[] ejbs = namingResources.findEjbs();
    for (final ContextEjb ejb : ejbs) {
        addEjb(ejb);
    }
}
Also used : ContextEnvironment(org.apache.tomcat.util.descriptor.web.ContextEnvironment) ContextResourceLink(org.apache.tomcat.util.descriptor.web.ContextResourceLink) ContextResourceEnvRef(org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef) ContextEjb(org.apache.tomcat.util.descriptor.web.ContextEjb) ContextResource(org.apache.tomcat.util.descriptor.web.ContextResource)

Example 8 with ContextResourceEnvRef

use of org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef in project tomee by apache.

the class TomcatJndiBuilder method mergeRef.

public void mergeRef(final NamingResourcesImpl naming, final ResourceEnvReferenceInfo ref) {
    if (isLookupRef(naming, ref)) {
        return;
    }
    ContextResourceEnvRef resourceEnv = naming.findResourceEnvRef(ref.referenceName.replaceAll("^comp/env/", ""));
    boolean addEntry = false;
    if (resourceEnv == null) {
        resourceEnv = new ContextResourceEnvRef();
        resourceEnv.setName(ref.referenceName.replaceAll("^comp/env/", ""));
        addEntry = true;
    }
    resourceEnv.setType(ref.resourceEnvRefType);
    if (UserTransaction.class.getName().equals(ref.resourceEnvRefType)) {
        resourceEnv.setProperty(Constants.FACTORY, UserTransactionFactory.class.getName());
    } else if (TransactionManager.class.getName().equals(ref.resourceEnvRefType)) {
        resourceEnv.setProperty(Constants.FACTORY, SystemComponentFactory.class.getName());
        resourceEnv.setProperty(NamingUtil.COMPONENT_TYPE, TransactionManager.class.getName());
    } else if (TransactionSynchronizationRegistry.class.getName().equals(ref.resourceEnvRefType)) {
        resourceEnv.setProperty(Constants.FACTORY, SystemComponentFactory.class.getName());
        resourceEnv.setProperty(NamingUtil.COMPONENT_TYPE, TransactionSynchronizationRegistry.class.getName());
    } else if ("org.omg.CORBA.ORB".equals(ref.resourceEnvRefType)) {
        resourceEnv.setProperty(Constants.FACTORY, SystemComponentFactory.class.getName());
        resourceEnv.setProperty(NamingUtil.COMPONENT_TYPE, ref.resourceEnvRefType);
    } else if (HandleDelegate.class.getName().equals(ref.resourceEnvRefType)) {
        resourceEnv.setProperty(Constants.FACTORY, SystemComponentFactory.class.getName());
        resourceEnv.setProperty(NamingUtil.COMPONENT_TYPE, HandleDelegate.class.getName());
    } else {
        resourceEnv.setProperty(Constants.FACTORY, ResourceFactory.class.getName());
        resourceEnv.setProperty(NamingUtil.NAME, ref.referenceName.replaceAll("^comp/env/", ""));
        if (ref.resourceID != null) {
            resourceEnv.setProperty(NamingUtil.RESOURCE_ID, ref.resourceID);
        }
        if (ref.location != null) {
            resourceEnv.setProperty(NamingUtil.JNDI_NAME, ref.location.jndiName);
            resourceEnv.setProperty(NamingUtil.JNDI_PROVIDER_ID, ref.location.jndiProviderId);
        }
    }
    if (addEntry) {
        naming.addResourceEnvRef(resourceEnv);
    }
    if (replaceEntry) {
        ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
        if (!addEntry) {
            namingContextListener.removeResourceEnvRef(resourceEnv.getName());
        }
        namingContextListener.addResourceEnvRef(resourceEnv);
        ContextAccessController.setReadOnly(namingContextListener.getName());
    }
}
Also used : UserTransaction(javax.transaction.UserTransaction) HandleDelegate(javax.ejb.spi.HandleDelegate) UserTransactionFactory(org.apache.tomee.common.UserTransactionFactory) TransactionSynchronizationRegistry(javax.transaction.TransactionSynchronizationRegistry) SystemComponentFactory(org.apache.tomee.common.SystemComponentFactory) ResourceFactory(org.apache.tomee.common.ResourceFactory) ContextResourceEnvRef(org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef)

Example 9 with ContextResourceEnvRef

use of org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef in project tomee by apache.

the class TomcatJndiBuilder method mergeRef.

public void mergeRef(final NamingResourcesImpl naming, final EnvEntryInfo ref) {
    //        if (!ref.referenceName.startsWith("comp/")) return;
    if ("java.lang.Class".equals(ref.type)) {
        final ContextResourceEnvRef resourceEnv = new ContextResourceEnvRef();
        resourceEnv.setName(ref.referenceName.replaceAll("^comp/env/", ""));
        resourceEnv.setProperty(Constants.FACTORY, ResourceFactory.class.getName());
        resourceEnv.setType(ref.type);
        resourceEnv.setProperty(NamingUtil.RESOURCE_ID, ref.value);
        resourceEnv.setOverride(false);
        naming.addResourceEnvRef(resourceEnv);
        return;
    }
    try {
        final ClassLoader loader = this.standardContext.getLoader().getClassLoader();
        final Class<?> type = loader.loadClass(ref.type);
        if (Enum.class.isAssignableFrom(type)) {
            final ContextResourceEnvRef enumRef = new ContextResourceEnvRef();
            enumRef.setName(ref.referenceName.replaceAll("^comp/env/", ""));
            enumRef.setProperty(Constants.FACTORY, EnumFactory.class.getName());
            enumRef.setProperty(EnumFactory.ENUM_VALUE, ref.value);
            enumRef.setType(ref.type);
            enumRef.setOverride(false);
            naming.addResourceEnvRef(enumRef);
            return;
        }
    } catch (final Throwable e) {
    // no-op
    }
    if (isLookupRef(naming, ref)) {
        return;
    }
    ContextEnvironment environment = naming.findEnvironment(ref.referenceName.replaceAll("^comp/env/", ""));
    boolean addEntry = false;
    if (environment == null) {
        environment = new ContextEnvironment();
        environment.setName(ref.referenceName.replaceAll("^comp/env/", ""));
        addEntry = true;
    }
    environment.setType(ref.type);
    environment.setValue(ref.value);
    environment.setOverride(false);
    if (addEntry) {
        naming.addEnvironment(environment);
    }
    if (replaceEntry) {
        ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
        if (!addEntry) {
            namingContextListener.removeEnvironment(environment.getName());
        }
        namingContextListener.addEnvironment(environment);
        ContextAccessController.setReadOnly(namingContextListener.getName());
    }
}
Also used : ContextEnvironment(org.apache.tomcat.util.descriptor.web.ContextEnvironment) EnumFactory(org.apache.tomee.common.EnumFactory) ResourceFactory(org.apache.tomee.common.ResourceFactory) ContextResourceEnvRef(org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef)

Example 10 with ContextResourceEnvRef

use of org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef in project tomcat by apache.

the class NamingContextListener method containerEvent.

// ---------------------------------------------- ContainerListener Methods
/**
     * Acknowledge the occurrence of the specified event.
     * Note: Will never be called when the listener is associated to a Server,
     * since it is not a Container.
     *
     * @param event ContainerEvent that has occurred
     */
@Override
public void containerEvent(ContainerEvent event) {
    if (!initialized)
        return;
    // Setting the context in read/write mode
    ContextAccessController.setWritable(getName(), token);
    String type = event.getType();
    if (type.equals("addEjb")) {
        String ejbName = (String) event.getData();
        if (ejbName != null) {
            ContextEjb ejb = namingResources.findEjb(ejbName);
            addEjb(ejb);
        }
    } else if (type.equals("addEnvironment")) {
        String environmentName = (String) event.getData();
        if (environmentName != null) {
            ContextEnvironment env = namingResources.findEnvironment(environmentName);
            addEnvironment(env);
        }
    } else if (type.equals("addLocalEjb")) {
        String localEjbName = (String) event.getData();
        if (localEjbName != null) {
            ContextLocalEjb localEjb = namingResources.findLocalEjb(localEjbName);
            addLocalEjb(localEjb);
        }
    } else if (type.equals("addResource")) {
        String resourceName = (String) event.getData();
        if (resourceName != null) {
            ContextResource resource = namingResources.findResource(resourceName);
            addResource(resource);
        }
    } else if (type.equals("addResourceLink")) {
        String resourceLinkName = (String) event.getData();
        if (resourceLinkName != null) {
            ContextResourceLink resourceLink = namingResources.findResourceLink(resourceLinkName);
            addResourceLink(resourceLink);
        }
    } else if (type.equals("addResourceEnvRef")) {
        String resourceEnvRefName = (String) event.getData();
        if (resourceEnvRefName != null) {
            ContextResourceEnvRef resourceEnvRef = namingResources.findResourceEnvRef(resourceEnvRefName);
            addResourceEnvRef(resourceEnvRef);
        }
    } else if (type.equals("addService")) {
        String serviceName = (String) event.getData();
        if (serviceName != null) {
            ContextService service = namingResources.findService(serviceName);
            addService(service);
        }
    } else if (type.equals("removeEjb")) {
        String ejbName = (String) event.getData();
        if (ejbName != null) {
            removeEjb(ejbName);
        }
    } else if (type.equals("removeEnvironment")) {
        String environmentName = (String) event.getData();
        if (environmentName != null) {
            removeEnvironment(environmentName);
        }
    } else if (type.equals("removeLocalEjb")) {
        String localEjbName = (String) event.getData();
        if (localEjbName != null) {
            removeLocalEjb(localEjbName);
        }
    } else if (type.equals("removeResource")) {
        String resourceName = (String) event.getData();
        if (resourceName != null) {
            removeResource(resourceName);
        }
    } else if (type.equals("removeResourceLink")) {
        String resourceLinkName = (String) event.getData();
        if (resourceLinkName != null) {
            removeResourceLink(resourceLinkName);
        }
    } else if (type.equals("removeResourceEnvRef")) {
        String resourceEnvRefName = (String) event.getData();
        if (resourceEnvRefName != null) {
            removeResourceEnvRef(resourceEnvRefName);
        }
    } else if (type.equals("removeService")) {
        String serviceName = (String) event.getData();
        if (serviceName != null) {
            removeService(serviceName);
        }
    }
    // Setting the context in read only mode
    ContextAccessController.setReadOnly(getName());
}
Also used : ContextEnvironment(org.apache.tomcat.util.descriptor.web.ContextEnvironment) ContextService(org.apache.tomcat.util.descriptor.web.ContextService) ContextLocalEjb(org.apache.tomcat.util.descriptor.web.ContextLocalEjb) ContextResourceLink(org.apache.tomcat.util.descriptor.web.ContextResourceLink) ContextResourceEnvRef(org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef) ContextEjb(org.apache.tomcat.util.descriptor.web.ContextEjb) ContextResource(org.apache.tomcat.util.descriptor.web.ContextResource)

Aggregations

ContextResourceEnvRef (org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef)11 ContextEnvironment (org.apache.tomcat.util.descriptor.web.ContextEnvironment)7 ContextResource (org.apache.tomcat.util.descriptor.web.ContextResource)6 ContextEjb (org.apache.tomcat.util.descriptor.web.ContextEjb)5 ContextResourceLink (org.apache.tomcat.util.descriptor.web.ContextResourceLink)4 ContextService (org.apache.tomcat.util.descriptor.web.ContextService)4 ContextLocalEjb (org.apache.tomcat.util.descriptor.web.ContextLocalEjb)3 NamingException (javax.naming.NamingException)2 Reference (javax.naming.Reference)2 StringRefAddr (javax.naming.StringRefAddr)2 NamingResourcesImpl (org.apache.catalina.deploy.NamingResourcesImpl)2 MessageDestinationRef (org.apache.tomcat.util.descriptor.web.MessageDestinationRef)2 ResourceFactory (org.apache.tomee.common.ResourceFactory)2 HandleDelegate (javax.ejb.spi.HandleDelegate)1 NameAlreadyBoundException (javax.naming.NameAlreadyBoundException)1 MultipartConfigElement (javax.servlet.MultipartConfigElement)1 SessionCookieConfig (javax.servlet.SessionCookieConfig)1 TransactionSynchronizationRegistry (javax.transaction.TransactionSynchronizationRegistry)1 UserTransaction (javax.transaction.UserTransaction)1 Context (org.apache.catalina.Context)1