Search in sources :

Example 76 with AppInfo

use of org.apache.openejb.assembler.classic.AppInfo in project tomee by apache.

the class UnDeployMojo method execute.

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    final Deployer deployer = (Deployer) lookup("openejb/DeployerBusinessRemote");
    try {
        final Collection<AppInfo> apps = deployer.getDeployedApps();
        final Collection<String> paths = new ArrayList<String>(apps.size());
        for (final AppInfo info : apps) {
            paths.add(info.path);
        }
        if (paths.contains(path)) {
            // exact matching
            deployer.undeploy(path);
        } else {
            for (final String proposed : paths) {
                // exact matching + extension
                if (path.equals(proposed + ".war") || path.equals(proposed + ".ear") || path.equals(proposed + ".jar")) {
                    deployer.undeploy(proposed);
                    return;
                }
            }
            for (final String proposed : paths) {
                // just the app/folder name
                if (proposed.endsWith("/" + path) || proposed.endsWith("\\" + path)) {
                    deployer.undeploy(proposed);
                    return;
                }
            }
        }
    } catch (final OpenEJBException e) {
        throw new TomEEException(e.getMessage(), e);
    }
}
Also used : OpenEJBException(org.apache.openejb.OpenEJBException) ArrayList(java.util.ArrayList) Deployer(org.apache.openejb.assembler.Deployer) AppInfo(org.apache.openejb.assembler.classic.AppInfo)

Example 77 with AppInfo

use of org.apache.openejb.assembler.classic.AppInfo in project tomee by apache.

the class RESTService method afterApplicationCreated.

public void afterApplicationCreated(@Observes final AssemblerAfterApplicationCreated event) {
    if (!enabled)
        return;
    final AppInfo appInfo = event.getApp();
    if ("false".equalsIgnoreCase(appInfo.properties.getProperty("openejb.jaxrs.on", "true"))) {
        return;
    }
    quickCheckIfOldDeploymentShouldBeUsedFromEjbConfig(appInfo);
    if (deployedApplications.add(appInfo)) {
        if (appInfo.webApps.size() == 0) {
            final ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
            final ClassLoader appClassLoader = getClassLoader(containerSystem.getAppContext(appInfo.appId).getClassLoader());
            Thread.currentThread().setContextClassLoader(appClassLoader);
            try {
                final Map<String, EJBRestServiceInfo> restEjbs = getRestEjbs(appInfo, null);
                if (restEjbs.isEmpty()) {
                    return;
                }
                final Collection<Object> providers;
                if (useDiscoveredProviders(appInfo)) {
                    providers = appProviders(appInfo.jaxRsProviders, appClassLoader);
                } else {
                    providers = new ArrayList<>();
                }
                if ("true".equalsIgnoreCase(appInfo.properties.getProperty(OPENEJB_USE_APPLICATION_PROPERTY, APPLICATION_DEPLOYMENT))) {
                    final Application application = new InternalApplication(null);
                    addEjbToApplication(application, restEjbs);
                    // merge configurations at app level since a single deployment is available
                    final List<IdPropertiesInfo> pojoConfigurations = new ArrayList<>();
                    BeanContext comp = null;
                    for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
                        for (final EnterpriseBeanInfo bean : ejbJar.enterpriseBeans) {
                            if (comp != null) {
                                break;
                            }
                            if (bean.ejbClass.equals(BeanContext.Comp.class.getName())) {
                                comp = containerSystem.getBeanContext(bean.ejbDeploymentId);
                                break;
                            }
                        }
                        if (ejbJar.pojoConfigurations != null) {
                            pojoConfigurations.addAll(ejbJar.pojoConfigurations);
                        }
                    }
                    if (appInfo.pojoConfigurations != null) {
                        pojoConfigurations.addAll(appInfo.pojoConfigurations);
                    }
                    final Map.Entry<String, EJBRestServiceInfo> next = restEjbs.entrySet().iterator().next();
                    if (comp == null) {
                        comp = next.getValue().context;
                    }
                    deployApplication(appInfo, next.getValue().path, restEjbs, comp.getClassLoader(), comp.getInjections(), containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), comp.getJndiContext(), providers, pojoConfigurations, application, wildcard);
                } else {
                    for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
                        final BeanContext ctx = ejb.getValue().context;
                        if (BeanType.MANAGED.equals(ctx.getComponentType())) {
                            deployPojo(appInfo.appId, "", ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), ctx.getJndiContext(), containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), providers, new ServiceConfiguration(ctx.getProperties(), appInfo.services));
                        } else {
                            deployEJB(appInfo.appId, "", ejb.getValue().path, ctx, providers, appInfo.services);
                        }
                    }
                }
            } finally {
                Thread.currentThread().setContextClassLoader(oldLoader);
            }
        } else {
            for (final WebAppInfo webApp : appInfo.webApps) {
                afterApplicationCreated(appInfo, webApp);
            }
        }
    }
}
Also used : ArrayList(java.util.ArrayList) WebAppInfo(org.apache.openejb.assembler.classic.WebAppInfo) AppInfo(org.apache.openejb.assembler.classic.AppInfo) EnterpriseBeanInfo(org.apache.openejb.assembler.classic.EnterpriseBeanInfo) BeanContext(org.apache.openejb.BeanContext) WebAppInfo(org.apache.openejb.assembler.classic.WebAppInfo) ServiceConfiguration(org.apache.openejb.assembler.classic.util.ServiceConfiguration) IdPropertiesInfo(org.apache.openejb.assembler.classic.IdPropertiesInfo) Application(javax.ws.rs.core.Application) EjbJarInfo(org.apache.openejb.assembler.classic.EjbJarInfo) Map(java.util.Map) HashMap(java.util.HashMap)

Example 78 with AppInfo

use of org.apache.openejb.assembler.classic.AppInfo in project tomee by apache.

the class WsService method start.

@Override
public void start() throws ServiceException {
    wsRegistry = SystemInstance.get().getComponent(WsRegistry.class);
    if (wsRegistry == null && SystemInstance.get().getComponent(HttpListenerRegistry.class) != null) {
        wsRegistry = new OpenEJBHttpWsRegistry();
    }
    if (portAddressRegistry == null) {
        portAddressRegistry = new PortAddressRegistryImpl();
        SystemInstance.get().setComponent(PortAddressRegistry.class, portAddressRegistry);
    }
    containerSystem = (CoreContainerSystem) SystemInstance.get().getComponent(ContainerSystem.class);
    portAddressRegistry = SystemInstance.get().getComponent(PortAddressRegistry.class);
    assembler = SystemInstance.get().getComponent(Assembler.class);
    SystemInstance.get().setComponent(WsService.class, this);
    if (assembler != null) {
        SystemInstance.get().addObserver(this);
        for (final AppInfo appInfo : assembler.getDeployedApplications()) {
            final AppContext appContext = containerSystem.getAppContext(appInfo.appId);
            deploy(new AssemblerAfterApplicationCreated(appInfo, appContext, null));
        }
    }
}
Also used : AppContext(org.apache.openejb.AppContext) PortAddressRegistryImpl(org.apache.openejb.core.webservices.PortAddressRegistryImpl) AssemblerAfterApplicationCreated(org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated) Assembler(org.apache.openejb.assembler.classic.Assembler) PortAddressRegistry(org.apache.openejb.core.webservices.PortAddressRegistry) WebAppInfo(org.apache.openejb.assembler.classic.WebAppInfo) AppInfo(org.apache.openejb.assembler.classic.AppInfo)

Example 79 with AppInfo

use of org.apache.openejb.assembler.classic.AppInfo in project tomee by apache.

the class WsService method stop.

@Override
public void stop() throws ServiceException {
    if (assembler != null) {
        SystemInstance.get().removeObserver(this);
        for (final AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications.keySet())) {
            undeploy(new AssemblerBeforeApplicationDestroyed(appInfo, null));
        }
        assembler = null;
        if (SystemInstance.get().getComponent(WsService.class) == this) {
            SystemInstance.get().removeComponent(WsService.class);
        }
    }
}
Also used : ArrayList(java.util.ArrayList) AssemblerBeforeApplicationDestroyed(org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed) WebAppInfo(org.apache.openejb.assembler.classic.WebAppInfo) AppInfo(org.apache.openejb.assembler.classic.AppInfo)

Example 80 with AppInfo

use of org.apache.openejb.assembler.classic.AppInfo in project tomee by apache.

the class WsService method newEjbToDeploy.

// handle webapp ejbs of ears - called before afterApplicationCreated for ear so dont add app to deployedApplications here
public void newEjbToDeploy(@Observes final NewEjbAvailableAfterApplicationCreated event) {
    final AppInfo app = event.getApp();
    if (!deployedApplications.containsKey(app)) {
        deployedApplications.putIfAbsent(app, new LinkedList<BeanContext>());
    }
    deployApp(app, event.getBeanContexts());
}
Also used : BeanContext(org.apache.openejb.BeanContext) WebAppInfo(org.apache.openejb.assembler.classic.WebAppInfo) AppInfo(org.apache.openejb.assembler.classic.AppInfo)

Aggregations

AppInfo (org.apache.openejb.assembler.classic.AppInfo)109 File (java.io.File)49 Assembler (org.apache.openejb.assembler.classic.Assembler)49 Test (org.junit.Test)31 HashMap (java.util.HashMap)29 WebAppInfo (org.apache.openejb.assembler.classic.WebAppInfo)25 EjbJar (org.apache.openejb.jee.EjbJar)17 EjbJarInfo (org.apache.openejb.assembler.classic.EjbJarInfo)16 ContainerSystem (org.apache.openejb.spi.ContainerSystem)15 OpenEJBException (org.apache.openejb.OpenEJBException)14 AppModule (org.apache.openejb.config.AppModule)14 Map (java.util.Map)12 EjbModule (org.apache.openejb.config.EjbModule)11 Properties (java.util.Properties)10 Persistence (org.apache.openejb.jee.jpa.unit.Persistence)10 ArrayList (java.util.ArrayList)9 InitialContext (javax.naming.InitialContext)9 StatelessBean (org.apache.openejb.jee.StatelessBean)9 PersistenceUnit (org.apache.openejb.jee.jpa.unit.PersistenceUnit)9 IOException (java.io.IOException)8