Search in sources :

Example 1 with NoSuchApplicationException

use of org.apache.openejb.NoSuchApplicationException in project tomee by apache.

the class Assembler method destroyApplication.

public void destroyApplication(final String filePath) throws UndeployException, NoSuchApplicationException {
    final ReentrantLock l = lock;
    l.lock();
    try {
        final AppInfo appInfo = deployedApplications.remove(filePath);
        if (appInfo == null) {
            throw new NoSuchApplicationException(filePath);
        }
        destroyApplication(appInfo);
    } finally {
        l.unlock();
    }
}
Also used : ReentrantLock(java.util.concurrent.locks.ReentrantLock) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException)

Example 2 with NoSuchApplicationException

use of org.apache.openejb.NoSuchApplicationException in project tomee by apache.

the class Undeploy method main.

public static void main(final String[] args) throws SystemExitException {
    final CommandLineParser parser = new PosixParser();
    // create the Options
    final Options options = new Options();
    options.addOption(Undeploy.option("v", "version", "cmd.deploy.opt.version"));
    // TODO this message doesn't exist
    options.addOption(Undeploy.option("h", "help", "cmd.undeploy.opt.help"));
    options.addOption(Undeploy.option("s", "server-url", "url", "cmd.deploy.opt.server"));
    CommandLine line = null;
    try {
        // parse the command line arguments
        line = parser.parse(options, args);
    } catch (final ParseException exp) {
        Undeploy.help(options);
        throw new SystemExitException(-1);
    }
    if (line.hasOption("help")) {
        Undeploy.help(options);
        return;
    } else if (line.hasOption("version")) {
        OpenEjbVersion.get().print(System.out);
        return;
    }
    if (line.getArgList().size() == 0) {
        System.out.println("Must specify an module id.");
        help(options);
        return;
    }
    final Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
    String serverUrl = line.getOptionValue("server-url", defaultServerUrl);
    if ("auto".equalsIgnoreCase(serverUrl.trim())) {
        try {
            final File sXml = new File(JavaSecurityManagers.getSystemProperty("openejb.base", "conf/server.xml"));
            if (sXml.exists()) {
                final QuickServerXmlParser result = QuickServerXmlParser.parse(sXml);
                serverUrl = "http://" + result.host() + ":" + result.http() + "/tomee/ejb";
            }
        } catch (final Throwable e) {
        // no-op
        }
    }
    p.put(Context.PROVIDER_URL, serverUrl);
    Deployer deployer = null;
    try {
        final InitialContext ctx = new InitialContext(p);
        deployer = (Deployer) ctx.lookup("openejb/DeployerBusinessRemote");
    } catch (final ServiceUnavailableException e) {
        System.out.println(e.getCause().getMessage());
        System.out.println(Undeploy.messages.format("cmd.deploy.serverOffline"));
        throw new SystemExitException(-1);
    } catch (final NamingException e) {
        System.out.println("DeployerEjb does not exist in server '" + serverUrl + "', check the server logs to ensure it exists and has not been removed.");
        throw new SystemExitException(-2);
    }
    int exitCode = 0;
    for (final Object obj : line.getArgList()) {
        final String moduleId = (String) obj;
        try {
            undeploy(moduleId, deployer);
        } catch (final DeploymentTerminatedException e) {
            System.out.println(e.getMessage());
            exitCode++;
        } catch (final UndeployException e) {
            System.out.println(messages.format("cmd.undeploy.failed", moduleId));
            e.printStackTrace(System.out);
            exitCode++;
        } catch (final NoSuchApplicationException e) {
            // TODO make this message
            System.out.println(messages.format("cmd.undeploy.noSuchModule", moduleId));
            exitCode++;
        }
    }
    if (exitCode != 0) {
        throw new SystemExitException(exitCode);
    }
}
Also used : Options(org.apache.commons.cli.Options) PosixParser(org.apache.commons.cli.PosixParser) SystemExitException(org.apache.openejb.cli.SystemExitException) ServiceUnavailableException(javax.naming.ServiceUnavailableException) Properties(java.util.Properties) InitialContext(javax.naming.InitialContext) CommandLine(org.apache.commons.cli.CommandLine) NamingException(javax.naming.NamingException) CommandLineParser(org.apache.commons.cli.CommandLineParser) ParseException(org.apache.commons.cli.ParseException) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException) File(java.io.File) Deployer(org.apache.openejb.assembler.Deployer) UndeployException(org.apache.openejb.UndeployException)

Example 3 with NoSuchApplicationException

use of org.apache.openejb.NoSuchApplicationException in project tomee by apache.

the class WebappDeployer method undeploy.

@Override
public void undeploy(final String moduleId) throws UndeployException, NoSuchApplicationException {
    try {
        final AppInfo appInfo = findAppInfo(moduleId);
        if (appInfo != null) {
            webappBuilder.undeployWebApps(appInfo);
        }
        assembler.destroyApplication(moduleId);
        final File moduleFile = new File(moduleId);
        if (moduleFile.getName().contains(".")) {
            // delete matching directory
            final File dir = new File(moduleFile.getAbsolutePath().substring(0, moduleFile.getAbsolutePath().lastIndexOf('.')));
            if (dir.exists() && dir.isDirectory()) {
                delete(dir);
            }
        } else {
            delete(new File(moduleFile + ".war"));
            delete(new File(moduleFile + ".ear"));
            delete(new File(moduleFile + ".rar"));
        }
        delete(moduleFile);
    } catch (Exception e) {
        throw new UndeployException(e);
    }
}
Also used : File(java.io.File) UndeployException(org.apache.openejb.UndeployException) OpenEJBException(org.apache.openejb.OpenEJBException) TomEERuntimeException(org.apache.tomee.catalina.TomEERuntimeException) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException) AppInfo(org.apache.openejb.assembler.classic.AppInfo) UndeployException(org.apache.openejb.UndeployException)

Example 4 with NoSuchApplicationException

use of org.apache.openejb.NoSuchApplicationException in project tomee by apache.

the class Assembler method destroy.

@Override
public void destroy() {
    final ReentrantLock l = lock;
    l.lock();
    try {
        final SystemInstance systemInstance = SystemInstance.get();
        systemInstance.fireEvent(new ContainerSystemPreDestroy());
        try {
            EjbTimerServiceImpl.shutdown();
        } catch (final Exception e) {
            logger.warning("Unable to shutdown scheduler", e);
        } catch (final NoClassDefFoundError ncdfe) {
        // no-op
        }
        logger.debug("Undeploying Applications");
        final Assembler assembler = this;
        final List<AppInfo> deployedApps = new ArrayList<>(assembler.getDeployedApplications());
        // if an app relies on the previous one it surely relies on it too at undeploy time
        Collections.reverse(deployedApps);
        for (final AppInfo appInfo : deployedApps) {
            try {
                assembler.destroyApplication(appInfo.path);
            } catch (final UndeployException e) {
                logger.error("Undeployment failed: " + appInfo.path, e);
            } catch (final NoSuchApplicationException e) {
            // Ignore
            }
        }
        final Iterator<ObjectName> it = containerObjectNames.iterator();
        final MBeanServer server = LocalMBeanServer.get();
        while (it.hasNext()) {
            try {
                server.unregisterMBean(it.next());
            } catch (final Exception ignored) {
            // no-op
            }
            it.remove();
        }
        try {
            remoteResourceMonitor.unregister();
        } catch (final Exception ignored) {
        // no-op
        }
        NamingEnumeration<Binding> namingEnumeration = null;
        try {
            namingEnumeration = containerSystem.getJNDIContext().listBindings("openejb/Resource");
        } catch (final NamingException ignored) {
        // no resource adapters were created
        }
        destroyResourceTree("", namingEnumeration);
        try {
            containerSystem.getJNDIContext().unbind("java:global");
        } catch (final NamingException ignored) {
        // no-op
        }
        systemInstance.removeComponent(OpenEjbConfiguration.class);
        systemInstance.removeComponent(JtaEntityManagerRegistry.class);
        systemInstance.removeComponent(TransactionSynchronizationRegistry.class);
        systemInstance.removeComponent(EjbResolver.class);
        systemInstance.removeComponent(ThreadSingletonService.class);
        systemInstance.fireEvent(new AssemblerDestroyed());
        systemInstance.removeObservers();
        if (DestroyableResource.class.isInstance(this.securityService)) {
            DestroyableResource.class.cast(this.securityService).destroyResource();
        }
        if (DestroyableResource.class.isInstance(this.transactionManager)) {
            DestroyableResource.class.cast(this.transactionManager).destroyResource();
        }
        for (final Container c : this.containerSystem.containers()) {
            if (DestroyableResource.class.isInstance(c)) {
                // TODO: should we use auto closeable there?
                DestroyableResource.class.cast(c).destroyResource();
            }
        }
        SystemInstance.reset();
    } finally {
        l.unlock();
    }
}
Also used : ReentrantLock(java.util.concurrent.locks.ReentrantLock) Binding(javax.naming.Binding) DestroyableResource(org.apache.openejb.api.resource.DestroyableResource) ArrayList(java.util.ArrayList) InvalidObjectException(java.io.InvalidObjectException) NameAlreadyBoundException(javax.naming.NameAlreadyBoundException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) ObjectStreamException(java.io.ObjectStreamException) ResourceAdapterInternalException(javax.resource.spi.ResourceAdapterInternalException) URISyntaxException(java.net.URISyntaxException) UndeployException(org.apache.openejb.UndeployException) DefinitionException(javax.enterprise.inject.spi.DefinitionException) ConstructionException(org.apache.xbean.recipe.ConstructionException) MBeanRegistrationException(javax.management.MBeanRegistrationException) InstanceNotFoundException(javax.management.InstanceNotFoundException) ValidationException(javax.validation.ValidationException) MalformedObjectNameException(javax.management.MalformedObjectNameException) DuplicateDeploymentIdException(org.apache.openejb.DuplicateDeploymentIdException) TimeoutException(java.util.concurrent.TimeoutException) NamingException(javax.naming.NamingException) OpenEJBException(org.apache.openejb.OpenEJBException) DeploymentException(javax.enterprise.inject.spi.DeploymentException) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException) MalformedURLException(java.net.MalformedURLException) OpenEJBRuntimeException(org.apache.openejb.OpenEJBRuntimeException) ObjectName(javax.management.ObjectName) JMXContainer(org.apache.openejb.assembler.monitoring.JMXContainer) Container(org.apache.openejb.Container) SystemInstance(org.apache.openejb.loader.SystemInstance) ContainerSystemPreDestroy(org.apache.openejb.assembler.classic.event.ContainerSystemPreDestroy) NamingException(javax.naming.NamingException) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException) UndeployException(org.apache.openejb.UndeployException) LocalMBeanServer(org.apache.openejb.monitoring.LocalMBeanServer) MBeanServer(javax.management.MBeanServer) AssemblerDestroyed(org.apache.openejb.assembler.classic.event.AssemblerDestroyed)

Example 5 with NoSuchApplicationException

use of org.apache.openejb.NoSuchApplicationException in project tomee by apache.

the class VmDeploymentManager method undeploy.

@Override
public ProgressObject undeploy(final TargetModuleID[] moduleIdList) {
    if (!connected) {
        throw new IllegalStateException("Deployment manager is disconnected");
    }
    UndeployException undeployException = null;
    final Set<TargetModuleID> results = new TreeSet<>();
    for (final TargetModuleID targetModuleId : moduleIdList) {
        try {
            getDeployer().undeploy(targetModuleId.getModuleID());
            results.add(targetModuleId);
        } catch (final UndeployException e) {
            if (undeployException == null) {
                undeployException = e;
            }
        } catch (final NoSuchApplicationException e) {
        // app was not deployed... this should be ignored by jsr88
        }
    }
    if (undeployException == null) {
        return new ProgressObjectImpl(CommandType.UNDEPLOY, results);
    } else {
        return new ProgressObjectImpl(CommandType.UNDEPLOY, undeployException);
    }
}
Also used : TargetModuleID(javax.enterprise.deploy.spi.TargetModuleID) TreeSet(java.util.TreeSet) NoSuchApplicationException(org.apache.openejb.NoSuchApplicationException) UndeployException(org.apache.openejb.UndeployException)

Aggregations

NoSuchApplicationException (org.apache.openejb.NoSuchApplicationException)5 UndeployException (org.apache.openejb.UndeployException)4 File (java.io.File)2 ReentrantLock (java.util.concurrent.locks.ReentrantLock)2 NamingException (javax.naming.NamingException)2 OpenEJBException (org.apache.openejb.OpenEJBException)2 IOException (java.io.IOException)1 InvalidObjectException (java.io.InvalidObjectException)1 ObjectStreamException (java.io.ObjectStreamException)1 MalformedURLException (java.net.MalformedURLException)1 URISyntaxException (java.net.URISyntaxException)1 ArrayList (java.util.ArrayList)1 Properties (java.util.Properties)1 TreeSet (java.util.TreeSet)1 ExecutionException (java.util.concurrent.ExecutionException)1 TimeoutException (java.util.concurrent.TimeoutException)1 TargetModuleID (javax.enterprise.deploy.spi.TargetModuleID)1 DefinitionException (javax.enterprise.inject.spi.DefinitionException)1 DeploymentException (javax.enterprise.inject.spi.DeploymentException)1 InstanceNotFoundException (javax.management.InstanceNotFoundException)1