[
https://issues.apache.org/jira/browse/ARTEMIS-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14734759#comment-14734759
]
Jeff Mesnil commented on ARTEMIS-219:
-------------------------------------
Your workaround is not acceptable. Either I will pass a path or a URI .
It will be: C:\Java\wildfly-10.0.0.CR1-SNAPSHOT\standalone\data\activemq\journal
or file://C:/Java/wildfly-10.0.0.CR1-SNAPSHOT/standalone/data/activemq/journal
Up until now, Artemis was working with paths. Now you have changed it to
support only URI.
If that's the case, we have to modify our integration code to pass URIs but it
is a change significant enough to be mentioned in the documentation.
Besides, I don't understand why absolute file (using *paths*) should no longer
be supported.
> 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)