The following comment has been added to this issue:

     Author: Steve Brewin
    Created: Mon, 9 Aug 2004 3:31 PM
       Body:
It is true that a URL can use %20 to escape spaces, thus a fully qualified URL such as 
"file:///c:/Program%20Files/whatever%20%you%20want" will work.

James' config.xml uses a relative URI to include documents so as not to bind the 
installed project to a specific protocol or location. The starting assumptions are:

- The included documents are served using the same protocol as the config.xml, be that 
file:, http:, ldap: or whatever.

- The 'config.xml' document can be stored anywhere in the hierarchy made accessible 
via the protocol.

- Documents included by 'config.xml' are stored in a fixed shape hierarchy relative to 
'config.xml'.

The user is free to override any of these assumptions by changing the declarations in 
config.xml. Such changes may include anything which conforms to the URL/URI specs., 
including using alternative protocols for some documents, changing the shape of the 
subtree, or <bold>using a fully qualified URL to work around the embedded space 
problem</bold>.

For that matter, the includes can be replaced entirely by inserting the contents of 
the relevant documents into the places they are referenced in 'config.xml' and 
removing the associated entity declarations. This is how it used to be until 
'config.xml' grew so large as to be barely intelligible.

The real world cost of this flexibility, based on bug reports and mailing list 
questions, seems to be that the default 'out of the box' configuration causes a small 
minority of users problems. 

Should we consider this a 'bug'? 
    No, as previously noted, James and the XML parser it relies on are behaving as 
they should.

Should we abandon this flexibility in order to circumvent the problem? 
    No, the benefits for the many far outweigh the problems for the few.

Should we ignore this problem? 
    No. Though we are technically correct we cannot expect all users to understand the 
issues involved and navigate themselves to a solution based on developing a deeper 
understanding of URIs and URLs.

What should we do to help? 
    The run scripts could check for installation into a path with embedded spaces, 
warn about the problem and point to an entry in the FAQ regarding circumventions. If 
anyone thinks that this is the right way to go, why not make a feature request, 
linking it to this issue? 
    Better, develop enhancements to the existing scripts and submit them as patches, 
or write the missing FAQ.

Finally, unprofessional? Try searching the knowledge bases and mailing lists of the 
commercial J2EE server vendors, or open source solutions such as Tomcat. Their 
solutions for this issue vary between "install it where we told you" to "YYGT" (yes, 
you get that). So we are as unprofessional as the market leaders :)

-- Steve
---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/JAMES-307?page=comments#action_37122

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JAMES-307

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JAMES-307
    Summary: james 2.2.0 run.bat Error building configuration
       Type: Bug

     Status: Closed
   Priority: Major
 Resolution: WON'T FIX

    Project: James
   Versions:
             2.2.0

   Assignee: 
   Reporter: Michael Cook

    Created: Sat, 17 Jul 2004 10:50 PM
    Updated: Mon, 9 Aug 2004 3:31 PM
Environment: Windows XP Home SP1 with JSDK version "1.4.1_02" and James 2.2.0.

Description:
First time thru and subsequently run.bat results in:
====================================================

Using PHOENIX_HOME:   C:\Program Files\james-2.2.0
Using PHOENIX_TMPDIR: 'C:\Program Files\james-2.2.0\bin\Files\james-2.2.0\temp'
Using JAVA_HOME:      c:\Program Files\j2sdk1.4.1_01

Phoenix 4.0.1

There was an uncaught exception:
---------------------------------------------------------
--- Message ---
Error building configuration from file:/C:/Program Files/james-2.2.0/apps/james/
SAR-INF/config.xml.
--- Stack Trace ---
org.apache.avalon.phoenix.interfaces.DeploymentException: Error building configu
ration from file:/C:/Program Files/james-2.2.0/apps/james/SAR-INF/config.xml.
        at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf
igurationFor(DefaultDeployer.java:499)
        at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(
DefaultDeployer.java:325)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
ile(DefaultEmbeddor.java:498)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
ile(DefaultEmbeddor.java:491)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
iles(DefaultEmbeddor.java:476)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployD
efaultApplications(DefaultEmbeddor.java:466)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute
(DefaultEmbeddor.java:224)
        at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:158)
        at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:144)

        at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:102)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:94)
        at org.apache.avalon.phoenix.launcher.Main.main(Main.java:46)
Caused by: java.net.MalformedURLException: no protocol: ../conf/james-fetchmail.
xml
        at java.net.URL.<init>(URL.java:579)
        at java.net.URL.<init>(URL.java:476)
        at java.net.URL.<init>(URL.java:425)
        at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.
java:796)
        at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.
java:725)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityRefer
ence(XMLDocumentFragmentScannerImpl.java:1073)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
LDocumentFragmentScannerImpl.java:333)
        at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav
a:524)
        at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav
a:580)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1169)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:129)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:116)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:97)
        at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf
igurationFor(DefaultDeployer.java:493)
        ... 15 more
rethrown from
java.net.MalformedURLException: no protocol: ../conf/james-fetchmail.xml
        at java.net.URL.<init>(URL.java:579)
        at java.net.URL.<init>(URL.java:476)
        at java.net.URL.<init>(URL.java:425)
        at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.
java:796)
        at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.
java:725)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityRefer
ence(XMLDocumentFragmentScannerImpl.java:1073)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
LDocumentFragmentScannerImpl.java:333)
        at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav
a:524)
        at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav
a:580)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1169)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:129)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:116)
        at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu
ild(ConfigurationBuilder.java:97)
        at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf
igurationFor(DefaultDeployer.java:493)
        at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(
DefaultDeployer.java:325)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
ile(DefaultEmbeddor.java:498)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
ile(DefaultEmbeddor.java:491)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF
iles(DefaultEmbeddor.java:476)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployD
efaultApplications(DefaultEmbeddor.java:466)
        at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute
(DefaultEmbeddor.java:224)
        at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:158)
        at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:144)

        at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:102)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:94)
        at org.apache.avalon.phoenix.launcher.Main.main(Main.java:46)

---------------------------------------------------------
The log file may contain further details of error.
Please check the configuration files and restart Phoenix.
If the problem persists, contact the Avalon project.  See
http://jakarta.apache.org/avalon for more information.
Shutting down Phoenix.
Press any key to continue . . .

Phoenix.log contains:
=====================
INFO    2004-07-18 00:30:09.859 [Phoenix ] (): Logger started
WARN    2004-07-18 00:30:09.937 [Phoenix ] (): Phoenix was not started by the daemon 
thus it will not be possible to restart the JVM via the Management interface.
INFO    2004-07-18 00:30:10.078 [Phoenix.] (): Work directory does not exist, 
attempting to create directory C:\Program Files\james-2.2.0\work.
INFO    2004-07-18 00:30:10.140 [Phoenix.] (): Installing Sar located at 
file:/C:/Program Files/james-2.2.0/apps/james.sar.
ERROR   2004-07-18 00:30:10.812 [Phoenix.] (): Error building configuration from 
file:/C:/Program Files/james-2.2.0/apps/james/SAR-INF/config.xml.
java.net.MalformedURLException: no protocol: ../conf/james-fetchmail.xml
        at java.net.URL.<init>(URL.java:579)
        at java.net.URL.<init>(URL.java:476)
        at java.net.URL.<init>(URL.java:425)
        at 
org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:796)
        at 
org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:725)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1073)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489)


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to