X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsState.java;h=eebf71ccbb4c3df4f0abbf2cf724b6681eb62874;hb=f73578bf6f1154b7a05c2996aa0e17e362e9c1bd;hp=7906c28faf99473f6d3190f78f4a64193a59ea14;hpb=972528f4de2d00690362c01d3ce843ca9cd10250;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java index 7906c28fa..eebf71ccb 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java @@ -7,9 +7,8 @@ import static java.util.Locale.ENGLISH; import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; +import java.nio.file.spi.FileSystemProvider; import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; import java.util.List; import java.util.Locale; import java.util.UUID; @@ -21,7 +20,6 @@ import javax.transaction.UserTransaction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.cms.auth.AuthConstants; import org.argeo.cms.i18n.LocaleUtils; import org.argeo.node.NodeConstants; import org.argeo.node.NodeState; @@ -63,7 +61,7 @@ public class CmsState implements NodeState { try { this.hostname = InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException e) { - log.error("Cannot set hostname", e); + log.error("Cannot set hostname: " + e); } availableSince = System.currentTimeMillis(); @@ -94,17 +92,21 @@ public class CmsState implements NodeState { RepositoryServiceFactory repositoryServiceFactory = new RepositoryServiceFactory(); shutdownHooks.add(() -> repositoryServiceFactory.shutdown()); bc.registerService(ManagedServiceFactory.class, repositoryServiceFactory, - LangUtils.init(Constants.SERVICE_PID, NodeConstants.NODE_REPOS_FACTORY_PID)); + LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_REPOS_FACTORY_PID)); NodeRepositoryFactory repositoryFactory = new NodeRepositoryFactory(); bc.registerService(RepositoryFactory.class, repositoryFactory, null); // Security - NodeUserAdmin userAdmin = new NodeUserAdmin(AuthConstants.ROLES_BASEDN); + NodeUserAdmin userAdmin = new NodeUserAdmin(NodeConstants.ROLES_BASEDN); shutdownHooks.add(() -> userAdmin.destroy()); - Dictionary props = new Hashtable<>(); - props.put(Constants.SERVICE_PID, NodeConstants.NODE_USER_ADMIN_PID); - bc.registerService(ManagedServiceFactory.class, userAdmin, props); + bc.registerService(ManagedServiceFactory.class, userAdmin, + LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_USER_ADMIN_PID)); + + // File System + CmsFsProvider cmsFsProvider = new CmsFsProvider(); + bc.registerService(FileSystemProvider.class, cmsFsProvider, + LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_FS_PROVIDER_PID)); } private void initTransactionManager() { @@ -113,19 +115,22 @@ public class CmsState implements NodeState { if (existingTm != null) { if (log.isDebugEnabled()) log.debug("Using provided transaction manager " + existingTm); + return; } - bitronix.tm.Configuration tmConf = TransactionManagerServices.getConfiguration(); - tmConf.setServerId(UUID.randomUUID().toString()); - - Bundle bitronixBundle = FrameworkUtil.getBundle(bitronix.tm.Configuration.class); - File tmBaseDir = bitronixBundle.getDataFile(KernelConstants.DIR_TRANSACTIONS); - File tmDir1 = new File(tmBaseDir, "btm1"); - tmDir1.mkdirs(); - tmConf.setLogPart1Filename(new File(tmDir1, tmDir1.getName() + ".tlog").getAbsolutePath()); - File tmDir2 = new File(tmBaseDir, "btm2"); - tmDir2.mkdirs(); - tmConf.setLogPart2Filename(new File(tmDir2, tmDir2.getName() + ".tlog").getAbsolutePath()); + if (!TransactionManagerServices.isTransactionManagerRunning()) { + bitronix.tm.Configuration tmConf = TransactionManagerServices.getConfiguration(); + tmConf.setServerId(UUID.randomUUID().toString()); + + Bundle bitronixBundle = FrameworkUtil.getBundle(bitronix.tm.Configuration.class); + File tmBaseDir = bitronixBundle.getDataFile(KernelConstants.DIR_TRANSACTIONS); + File tmDir1 = new File(tmBaseDir, "btm1"); + tmDir1.mkdirs(); + tmConf.setLogPart1Filename(new File(tmDir1, tmDir1.getName() + ".tlog").getAbsolutePath()); + File tmDir2 = new File(tmBaseDir, "btm2"); + tmDir2.mkdirs(); + tmConf.setLogPart2Filename(new File(tmDir2, tmDir2.getName() + ".tlog").getAbsolutePath()); + } BitronixTransactionManager transactionManager = getTransactionManager(); shutdownHooks.add(() -> transactionManager.shutdown()); BitronixTransactionSynchronizationRegistry transactionSynchronizationRegistry = getTransactionSynchronizationRegistry(); @@ -138,11 +143,11 @@ public class CmsState implements NodeState { } void shutdown() { - applyShutdownHooks(); - if (kernelThread != null) kernelThread.destroyAndJoin(); + applyShutdownHooks(); + if (log.isDebugEnabled()) log.debug("## CMS STOPPED"); }