Re: Database connection
Re: Database connection
- Subject: Re: Database connection
- From: Samuel Pelletier <email@hidden>
- Date: Wed, 8 Nov 2017 08:54:31 -0500
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 <email@hidden> 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 <email@hidden>:
>>> 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 (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>> This email sent to email@hidden
>> 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 (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden