[ https://issues.apache.org/jira/browse/ARTEMIS-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14734729#comment-14734729 ]
clebert suconic commented on ARTEMIS-219: ----------------------------------------- This is because we need the data directory relative to artemis.instance. We are using URIs.. so if you used / it would work fine. > Absolute paths for persistence directories are not working on Windows > --------------------------------------------------------------------- > > Key: ARTEMIS-219 > URL: https://issues.apache.org/jira/browse/ARTEMIS-219 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker > Affects Versions: 1.0.0 > Reporter: Jeff Mesnil > Priority: Critical > > Use case: > * Artemis embedded in an application server. > * Persistence directories configured using absolute paths (e.g. : > C:\Java\wildfly-10.0.0.CR1-SNAPSHOT\standalone\data\activemq\journal) > When the server starts, Artemis throws an exception: > {noformat} > 2015-09-08 10:16:35,751 ERROR [org.jboss.msc.service.fail] (ServerService > Thread Pool -- 64) MSC000001: Failed to start service > jboss.messaging-activemq.default.jms.manager: > org.jboss.msc.service.StartException in service > jboss.messaging-activemq.default.jms.manager: WFLYMSGAMQ0033: Failed to start > service > at > org.wildfly.extension.messaging.activemq.jms.JMSService.doStart(JMSService.java:177) > at > org.wildfly.extension.messaging.activemq.jms.JMSService.access$000(JMSService.java:60) > at > org.wildfly.extension.messaging.activemq.jms.JMSService$1.run(JMSService.java:94) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > at org.jboss.threads.JBossThread.run(JBossThread.java:320) > Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: > Illegal character in opaque part at index 2: > C:\Java\wildfly-10.0.0.CR1-SNAPSHOT\standalone\data\activemq\journal > at > org.apache.activemq.artemis.core.config.impl.ConfigurationImpl.subFolder(ConfigurationImpl.java:1434) > at > org.apache.activemq.artemis.core.config.impl.ConfigurationImpl.getJournalLocation(ConfigurationImpl.java:507) > at > org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.checkJournalDirectory(ActiveMQServerImpl.java:1800) > at > org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:381) > at > org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.start(JMSServerManagerImpl.java:381) > at > org.wildfly.extension.messaging.activemq.jms.JMSService.doStart(JMSService.java:173) > ... 8 more > Caused by: java.lang.IllegalArgumentException: Illegal character in opaque > part at index 2: > C:\Java\wildfly-10.0.0.CR1-SNAPSHOT\standalone\data\activemq\journal > at java.net.URI.create(URI.java:852) > at java.net.URI.resolve(URI.java:1036) > at > org.apache.activemq.artemis.core.config.impl.ConfigurationImpl.subFolder(ConfigurationImpl.java:1430) > ... 13 more > Caused by: java.net.URISyntaxException: Illegal character in opaque part at > index 2: C:\Java\wildfly-10.0.0.CR1-SNAPSHOT\standalone\data\activemq\journal > at java.net.URI$Parser.fail(URI.java:2848) > at java.net.URI$Parser.checkChars(URI.java:3021) > at java.net.URI$Parser.parse(URI.java:3058) > at java.net.URI.<init>(URI.java:588) > at java.net.URI.create(URI.java:850) > ... 15 more > {noformat} > It is common usage to use absolute paths for these persistence directories in > the shared store use case. It is no longer possible to do so. > The configuration will now always be stored in a subfolder based on the > artemis.instance or user.dir sysprop. In the shared store use case, these sys > props makes no sense. > Note that it works in Unix but I'm not sure that's by design. A file://XXX// > folder will be ignored if it resolves an absolute file path (code in > ConfigurationImpl#subFolder). > This is critical for us to be able to use absolute paths to configure Artemis > persistence. Our app server has its own way to resolve paths and we just need > to pass the resolved absolute paths to Artemis. > Using only relative paths will make the configuration of Artemis more complex > than it already is. > Possible fix: > * Detect if the configured directory is absolute before trying to resolve it > as a relative path -- This message was sent by Atlassian JIRA (v6.3.4#6332)