Hi André,

You can even remove some code. Wonder try to load some specific properties 
files is a specific order. This ordered loading allows to override a setting in 
a file loaded after another with the same setting.

Here are the one I use in load order: 

1 - the main file named "Properties" created by the project template is loaded 
first. You may have a file inside each framework and in the app itself.

2 - A file named "Properties.username" where username is the current system 
username.

3- The file named "Properties.dev" loaded only in development mode.

By default username is the system username but you can specify this name in the 
Java arguments. By adding "-user.name prod" in the Monitor Additional 
Arguments, Wonder will load the Properties.prod file for exemple.

This is a zero code way to do the same thing you do manually if you specify the 
database connection in the Properties.username file.

Regards,

Samuel



> Le 8 nov. 2017 à 03:31, André Rothe <andre.ro...@phosco.info> a écrit :
> 
> Hi René,
> 
> I have found a solution for my problems:
> 
> In the JavaMonitor I have configured two applications with the same binaries. 
> The only difference is a VM parameter -Dconfigfile=foo.config in the first 
> application and the parameter -Dconfigfile=bar.config in the other 
> application.
> 
> With these parameters I can use different database configurations, which are 
> stored into the configuration files.
> 
> In the Application class I can use
> 
> FileInputStream fs = new FileInputStream(System.getProperty("user.dir") + 
> System.getProperty("file.separator") + System.getProperty("configfile"));
> Properties p = new Properties();
> p.load(fs);
> 
> to get the database credentials. According to your post, in the model I have 
> removed all connections, this will result in an Exception, if I access an 
> EOEditingContext (i.e. within a Session). To prevent that, I set the 
> connection within the Application class, before any access to the database.
> 
> EOModel model = EOModelGroup.defaultGroup().modelNamed("MyModelName");
> EODatabaseContext dc = 
> EODatabaseContext.registeredDatabaseContextForModel(model, new 
> EOEditingContext());
> EOAdaptor da = dc.adaptorContext().adaptor();
> 
> The database credentials I can store into an NSMutableDictionary:
> 
> NSMutableDictionary cred = new NSMutableDictionary();
> cred.takeValueForKey(p.getProperty("username"), "username");
> cred.takeValueForKey(p.getProperty("password"), "password");
> cred.takeValueForKey(p.getProperty("url"), "URL");
> cred.takeValueForKey(p.getProperty("driver"), "driver");
> 
> Then I set the new ConnectionDictionary for the EOAdapter and EOModel:
> 
> da.setConnectionDictionary(cred);
> model.setConnectionDictionary(cred);
> 
> This works also for all other EOEditingContext instances within the 
> application, I don't have to switch the connection for every new EC instance.
> 
> Some ideas I got from https://stackoverflow.com/questions/13459208 and 
> http://mirror.informatimago.com/next/developer.apple.com/documentation/WebObjects/Enterprise_Objects/Connecting/chapter_10_section_8.html#//apple_ref/doc/uid/TP30001011-DontLinkChapterID_6-TPXREF144
> 
> Best regards
> André
> 
> 
> Am 2017-11-06 17:05, schrieb René Bock:
>> Hi André
>> we don't store database connection infos in the eo-model.  Instead we follow:
>> https://wiki.wocommunity.org/display/documentation/Best+Practices-Properties+Files
>> e.g:
>> dbConnectURLGLOBAL=jdbc:mysql://localhost/DbName
>> dbConnectUserGLOBAL=ojp
>> dbConnectPasswordGLOBAL=XXXXX
>> dbEOPrototypesEntityGLOBAL=EOJDBCMySQLPrototypes
>> dbConnectPluginGLOBAL=MySQLPlugIn
>>> Am 06.11.2017 um 16:55 schrieb André Rothe <andre.ro...@phosco.info>:
>>> Hi,
>>> three questions according the database connection:
>>> I have a model, which has a database connection defined in a connection 
>>> dictionary. But the model should not open the connection per default, it 
>>> should get the credentials from another property file which will differ 
>>> between the instances of the application in the JavaMonitor. If I use this 
>>> solution:
>>> http://mirror.informatimago.com/next/developer.apple.com/documentation/WebObjects/Enterprise_Objects/Connecting/chapter_10_section_8.html
>>> the app will connect to the default database and makes then a reconnect to 
>>> the later provided database. Is it possible to prevent the first connect?
>>> If I use multiple EOEditingContexts in my application, I have to change the 
>>> connection parameters for every EC. When is the best time to set these for 
>>> the session.defaultEditingContext()? Can I get the current connection 
>>> credentials from an EditingContext instance to use it on another EC 
>>> instance?
>>> Thank you.
>>> Best regards
>>> André
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/bock%40salient-doremus.de
>>> This email sent to b...@salient-doremus.de
>> Mit freundlichen Grüßen
>>      René Bock
>> --
>> Telefon: +49 69 650096 18
>> salient GmbH, Lindleystraße 12, 60314 Frankfurt
>> Telefon Zentrale: 069 / 65 00 96 - 0  |  www.salient-doremus.de
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
> 
> This email sent to sam...@samkar.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to