You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Rainer Jung <to...@kippdata.de> on 2005/08/02 11:57:27 UTC
Writing MemoryUserDatabase on Startup
Hi,
I wonder, why
/org/apache/catalina/users/MemoryUserDatabaseFactory.java
saves the MemoryUserDatabase directly after opening it:
public Object getObjectInstance(Object obj, Name name, Context
nameCtx, Hashtable environment) throws Exception {
...
// Return the configured database instance
database.open();
database.save();
return (database);
}
That means, the runtime user of tomcat needs write permissions on the
directory, the file is in (see the implementation of
MemoryUserDatabase.save()).
Ogf course in case one likes to administer the user database the save
function is necessary. But there are two cases where one would prefer to
have tomcat not trying to save the database during startup:
1) Running tomcat from CD
2) Having a very secure setup of tomcat, where all the configs are write
disabled.
The call to database.save() is in the code since the very first version
in TC 4, but I can't really see, why it is necessary.
Another possibility would be to catch the Exception thrown when there is
no write permission and to simply log a warning.
Also: there is a save() done in close(). I don't know, where the close
is called from, but it looks like nowhere in catalina code (eventually
in admin).
Any comments? Thanks!
Rainer
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: Writing MemoryUserDatabase on Startup
Posted by Remy Maucherat <re...@apache.org>.
Rainer Jung wrote:
> Hi Remy,
>
> so would it be OK, if I produce a patch, that cares about the Exception
> and logs a message instead? I could make that configurable if you think
> there is too much danger for a user to loose changes because he was able
> to start tomcat and didn't notice the database was not writable.
>
> I will propose a patch later that week and you can have a look at it.
Catching and logging a warning would be good, I think.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: Writing MemoryUserDatabase on Startup
Posted by Rainer Jung <to...@kippdata.de>.
Hi Remy,
so would it be OK, if I produce a patch, that cares about the Exception
and logs a message instead? I could make that configurable if you think
there is too much danger for a user to loose changes because he was able
to start tomcat and didn't notice the database was not writable.
I will propose a patch later that week and you can have a look at it.
By the way: I think Mladen also wanted such a behaviour and just now
there is a user on the users list who ran into trouble because of the
needed write permissions (not easy to understand/believe, that the file
is needed to be written during startup).
Rainer
Remy Maucherat wrote:
> Rainer Jung wrote:
>
>> Hi,
>>
>> I wonder, why
>>
>> /org/apache/catalina/users/MemoryUserDatabaseFactory.java
>>
>> saves the MemoryUserDatabase directly after opening it:
>>
>> public Object getObjectInstance(Object obj, Name name, Context
>> nameCtx, Hashtable environment) throws Exception {
>>
>> ...
>>
>> // Return the configured database instance
>> database.open();
>> database.save();
>> return (database);
>>
>> }
>>
>> That means, the runtime user of tomcat needs write permissions on the
>> directory, the file is in (see the implementation of
>> MemoryUserDatabase.save()).
>>
>> Ogf course in case one likes to administer the user database the save
>> function is necessary. But there are two cases where one would prefer to
>> have tomcat not trying to save the database during startup:
>>
>> 1) Running tomcat from CD
>> 2) Having a very secure setup of tomcat, where all the configs are write
>> disabled.
>>
>> The call to database.save() is in the code since the very first version
>> in TC 4, but I can't really see, why it is necessary.
>>
>> Another possibility would be to catch the Exception thrown when there is
>> no write permission and to simply log a warning.
>>
>> Also: there is a save() done in close(). I don't know, where the close
>> is called from, but it looks like nowhere in catalina code (eventually
>> in admin).
>>
>> Any comments? Thanks!
>
>
> The problem is (mostly) the save in close: the database can't know for
> sure if its stuff was updated so it always saves.
>
> I understand the need for 1), which can be achieved with the other
> equivalent-but-not-management-friendly memory realm. 2) seems unlikely IMO.
>
> Rémy
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: Writing MemoryUserDatabase on Startup
Posted by Remy Maucherat <re...@apache.org>.
Rainer Jung wrote:
> Hi,
>
> I wonder, why
>
> /org/apache/catalina/users/MemoryUserDatabaseFactory.java
>
> saves the MemoryUserDatabase directly after opening it:
>
> public Object getObjectInstance(Object obj, Name name, Context
> nameCtx, Hashtable environment) throws Exception {
>
> ...
>
> // Return the configured database instance
> database.open();
> database.save();
> return (database);
>
> }
>
> That means, the runtime user of tomcat needs write permissions on the
> directory, the file is in (see the implementation of
> MemoryUserDatabase.save()).
>
> Ogf course in case one likes to administer the user database the save
> function is necessary. But there are two cases where one would prefer to
> have tomcat not trying to save the database during startup:
>
> 1) Running tomcat from CD
> 2) Having a very secure setup of tomcat, where all the configs are write
> disabled.
>
> The call to database.save() is in the code since the very first version
> in TC 4, but I can't really see, why it is necessary.
>
> Another possibility would be to catch the Exception thrown when there is
> no write permission and to simply log a warning.
>
> Also: there is a save() done in close(). I don't know, where the close
> is called from, but it looks like nowhere in catalina code (eventually
> in admin).
>
> Any comments? Thanks!
The problem is (mostly) the save in close: the database can't know for
sure if its stuff was updated so it always saves.
I understand the need for 1), which can be achieved with the other
equivalent-but-not-management-friendly memory realm. 2) seems unlikely IMO.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org