It’s not a Bootique project, it’s a plain old Java project that I run in 
Eclipse. I can read the properties with System.getProperty, but Cayenne is 
still using the user and password from the model.

 INFO [main] (XMLDataChannelDescriptorLoader.java:125) - Loading XML 
configuration resource from 
file:/Users/probert/Code/modele-migration-filemaker/target/classes/cayenne-mysql.xml
DEBUG [main] (DefaultHandlerFactory.java:38) - Skipping unknown tag 
<http://cayenne.apache.org/schema/10/domain:domain>
 INFO [main] (DataChannelChildrenHandler.java:106) - Loading XML DataMap 
resource from 
file:/Users/probert/Code/modele-migration-filemaker/target/classes/mysql.map.xml
 INFO [main] (DataSourceChildrenHandler.java:81) - loading user name and 
password.
DEBUG [main] (DataDomainProvider.java:240) - finished configuration loading in 
62 ms.
 INFO [main] (EntityResolver.java:118) - added runtime complimentary 
DbRelationship from adresse to ecole
 INFO [main] (EntityResolver.java:118) - added runtime complimentary 
DbRelationship from don_ecole to ecole
 INFO [main] (EntityResolver.java:118) - added runtime complimentary 
DbRelationship from no_serie to licence
 INFO [main] (EntityResolver.java:118) - added runtime complimentary 
DbRelationship from regroupement to utilisateur
 INFO [main] (EntityResolver.java:118) - added runtime complimentary 
DbRelationship from etat_utilisateur to utilisateur_etats
 INFO [main] (DriverDataSource.java:179) - Connecting to 
'jdbc:mysql://localhost:3306/services_web' as 'xxxx'
 INFO [main] (DriverDataSource.java:170) - *** Connecting: FAILURE.
java.sql.SQLException: Access denied for user 'xxxx'@'localhost' (using 
password: YES)

I have tried with both -Dcayenne.jdbc.username.mysql.mysql=root and 
-Dcayenne.jdbc.username=root

> Le 17 janv. 2018 à 00:58, Andrus Adamchik <and...@objectstyle.org> a écrit :
> 
> If it is not a Bootique project, the property should work. A few non-Bootique 
> projects that I still have (that are on Cayenne 4.0) are started using 
> -Dcayenne.* properties from the docs.
> 
> If it is a Bootique project, you will need to use the Bootique approach to 
> configure credentials for anything [1], Cayenne included. E.g. for a sample 
> config [2], you'd be setting a value for the property 
> "-Dbq.jdbc.mysql.password". Another way (preferred to -D IMO) is to define a 
> shell variable pointing to the same property, and then exporting the var:
> 
> in MyModule.java:
> 
>   BQCoreModule.extend(binder)
>     .declareVar("jdbc.mysql.username", "DB_USER");
>     .declareVar("jdbc.mysql.password", "DB_PASSWORD");
> 
> in startup script:
> 
>   export DB_PASSWORD=root
>   export DB_PASSWORD=secret
> 
>   java -jar my.jar # no password in the Java process sig
> 
> Andrus
> 
> [1] 
> http://bootique.io/docs/0/bootique-docs/index.html#chapter-7-configuration-and-configurable-factories
> [2] 
> https://github.com/bootique-examples/bootique-cayenne-demo/blob/master/config.yml
> 
>> On Jan 17, 2018, at 12:22 AM, Pascal Robert <prob...@druide.com> wrote:
>> 
>> Do -Dcayenne.jdbc.username really work? I’m trying to use that (so that the 
>> password is not stored in Git), and the runtime is still using the login 
>> information from the XML file.
>> 
>> Cayenne 4.1.M1.
>> ServerRuntime mysqlRuntime = 
>> ServerRuntime.builder().addConfig("cayenne-mysql.xml").build();
>> 
>>> Le 18 déc. 2017 à 11:49, Andrus Adamchik <and...@objectstyle.org> a écrit :
>>> 
>>> Hi Mark,
>>> 
>>> We've done quite a bit of work in Cayenne to avoid complex things like 
>>> PasswordEncoding or custom DataSourceFactories. If all that is needed is to 
>>> change / define login credentials, the simplest way is via properties [1]. 
>>> [2] shows an example with a single DataNode. If you have more than one, you 
>>> will need to add the project name and the DataNode name to the base 
>>> property name. E.g.:
>>> 
>>> export MY_USER=user
>>> export MY_PASSWORD=secret
>>> 
>>> java -Dcayenne.jdbc.username.project.mynode=$MY_USER \
>>>   -Dcayenne.jdbc.password.project.mynode=$MY_PASSWORD \
>>>   -jar myapp.jar 
>>> 
>>> 
>>> Hope this helps,
>>> Andrus
>>> 
>>> [1] 
>>> http://cayenne.apache.org/docs/4.0/cayenne-guide/configuration-properties.html
>>> [2] 
>>> https://stackoverflow.com/questions/45781378/best-practice-to-manage-apache-cayenne-project-xml-file
>>> 
>>> 
>>> 
>>>> On Dec 17, 2017, at 4:23 AM, Mark Hull <mark.mkg...@gmail.com> wrote:
>>>> 
>>>> I apologize if this question has been asked and answered before but: What 
>>>> is the best-practices solution to redact the database user name and 
>>>> password from an XML file created and used by Cayenne Modeler? The 
>>>> ServerRuntime build statement is simply:
>>>> 
>>>> cayenneRuntime = ServerRuntime.builder()
>>>> .addConfig("com/hulles/a1icia/cayenne/cayenne-a1icia.xml")
>>>>          .build();
>>>> 
>>>> It works just fine as long as the db user name and password are in the XML 
>>>> file, but I don't believe in leaving clear-text artifacts like that laying 
>>>> around in the code, so I want to add the user and password data at runtime 
>>>> from a Java method (not from an external file or an 'executable', whatever 
>>>> that means in the content of PasswordEncoding). Adding .user("xyz") and 
>>>> .password("zyx") to the build statement don't work, presumably because the 
>>>> DataNode is not the default and those statements just set their respective 
>>>> fields for the default DataNode.
>>>> 
>>>> If I have to, I can create either a Module to change those properties 
>>>> somehow at runtime (though the documentation for doing so is, to be kind, 
>>>> sparse), somehow implement the PasswordEncoding (even less documentation, 
>>>> because I don't know where it's used), or just edit the XML at runtime 
>>>> (horrible choice but looking like the best of a bad lot at this point).
>>>> 
>>>> All this seems like a lot of effort when I imagine this need must crop up 
>>>> fairly often among Cayenne users (it should, for security reasons IMO). Is 
>>>> there a simple standard way to do what I want? Or at least a standard way? 
>>>> I don't want to invent a new wheel here. I feel like I'm missing something 
>>>> obvious that everyone else knows about and that I just missed. Oh, by the 
>>>> way, whatever the solution is should still allow Cayenne Modeler to 
>>>> function normally.
>>>> 
>>>> I promise I searched for the answer everywhere I could think of. 
>>>> StackOverflow had a couple answers that used deprecated methods and didn't 
>>>> work when I tried them.
>>>> 
>>>> Thanks in advance for any help. I hope there's a really simple answer so I 
>>>> feel stupid but don't have to spend any more time on this than I have 
>>>> already. :)
>>>> 
>>>> - Mark Hull
>>>> 
>>>> /People say nothing is impossible, but I do nothing every day. - A. A. 
>>>> Milne/
>>> 
>> 
> 

Reply via email to