You will probably get more traction by posting to commons-dev.  While
tomcat-dev still has a couple of commons committers (and, no, I'm not one of
them) that hang out here, its not like the old days :(.

----- Original Message ----- 
From: "Henri Gomez" <[EMAIL PROTECTED]>
To: "Tomcat Developers List" <[EMAIL PROTECTED]>
Sent: Tuesday, October 14, 2003 12:29 AM
Subject: Digester and external entities with systemId only : Was: Important
requirement : Re: [next] What's next ?


> I traced TC 5.0 and Digester and suspect what could be the problem
> with external entities when only SYTEM is defined ie :
>
>
> <!ENTITY appset1 SYSTEM "appset1.xml">
> <!ENTITY appset2 SYSTEM "appset2.xml">
>
>
> In Digester.java, at least in the 1.5 release, resolveEntity return
> null if publicId is null even if systemId is set.
>
> To make it works, I just replaced :
>
> --
>
>          if (entityURL == null){
> return (null);
>
> by ---
>
>          if (entityURL == null){
>          if (systemId == null)
>             return (null);
>             else
>             entityURL = systemId;
>          }
>
>
> FYI, in resolveEntity we got as parms for previous app1&app2 entities
> declaration:
>
> systemid="jndi:/localhost/myapp/WEB-INF/appset1.xml" and publicid=null
>
> systemid="jndi:/localhost/myapp/WEB-INF/appset2.xml" and publicid=null
>
>
> This hack will solve the resolution of entities presents in WEB-INF.
>
>
>
> Now for entities located outside webapp / WEB-INF.
>
> I know what the spec say about entities outside WAR but there is many
> case where you should serve the SAME application for many customers,
> and where specific settings for each customer MUST exist outside WAR.
>
> Let see my case :
>
> if the entity is defined like this :
>
> <!ENTITY appset1 SYSTEM "file:../etc/appset1.xml">
> <!ENTITY appset2 SYSTEM "file:/var/www/customer1/etc/appset2.xml">
>
> resolveEntity got systemId="file:../etc/appset1.xml" and
> systemId="file:/var/www/customer1/etc/appset2.xml"
>
> So if you have to specify a resource somewhere on your system,
> outside the webapp you should :
>
> 1) Know what the appBase and use .. trick to get it (relative).
> 2) Give an absolute reference on the file system, which is bad
>     when you want to use the .war for many customers.
>
>
> Let consider the following layout for an ISP/ASP provider wich
> use the same application for many clients (running their own TC 5).
>
> /var/www/customer1/etc/appset1.xml
> /var/www/customer1/etc/appset2.xml
> /var/www/customer1/var/tomcat5/...
> /var/www/customer1/var/tomcat5/webapps/themainapp.war
>
> /var/www/customer2/etc/appset1.xml
> /var/www/customer2/etc/appset2.xml
> /var/www/customer2/var/tomcat5/...
> /var/www/customer2/var/tomcat5/webapps/themainapp.war
>
> You could use the file:.. trick to go from
> /var/www/customerx/var/tomcat5/, which is the appBase to
> /var/www/customerx/etc, where the customer specific settings
> are located.
>
>
>
> Now consider another layout for an ISP/ASP provider wich
> use the same application for many clients but using a shared TC5.
>
> /var/www/customer1/etc/appset1.xml
> /var/www/customer1/etc/appset2.xml
> /var/www/customer1/webapps/themainapp1.war
> /var/www/customer1/webapps/themainapp1/WEB-INF/...
>
> /var/www/customer2/etc/appset1.xml
> /var/www/customer2/etc/appset2.xml
> /var/www/customer2/webapps/themainapp2.war
> /var/www/customer2/webapps/themainapp1/WEB-INF/...
>
> themainapp1.war and themainapp2.war are copy of or symlink to the
> generic themainapp.war and are decompressed at startup time.
>
> TC 5 is in shared mode, so it live outside customer layout :
>
> /var/tomcat5/...
>
> You couldn't use anymore the file:.. trick to go from /var/tomcat5/,
> which is the appBase to /var/www/customerx/etc, where the customer
> specific settings are located.
>
> The only way to developpers and admins to have it works in both case is
> to set the current directory when web.xml is parsed to WEB-INF/.
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

This message is intended only for the use of the person(s) listed above as the 
intended recipient(s), and may contain information that is PRIVILEGED and 
CONFIDENTIAL.  If you are not an intended recipient, you may not read, copy, or 
distribute this message or any attachment. If you received this communication in 
error, please notify us immediately by e-mail and then delete all copies of this 
message and any attachments.

In addition you should be aware that ordinary (unencrypted) e-mail sent through the 
Internet is not secure. Do not send confidential or sensitive information, such as 
social security numbers, account numbers, personal identification numbers and 
passwords, to us via ordinary (unencrypted) e-mail.

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

Reply via email to