With Cayenne 3.x I had similar issue
I had to delete the connection info nodes from the model, editing XML directly,
dropping the entire <data-source> </data-source>
then...
@Override
public void configure(Binder binder) {
binder.bind(ResourceLocator.class).toInstance(new
ClassLoaderResourceLocator());
//those grab infos from my properties....
String driver = conf.getString(JDBC_DRIVER_PROPERTY, "");
String jdbcUrl = conf.getString(JDBC_URL_PROPERTY, "");
String username = conf.getString(JDBC_USERNAME_PROPERTY, "");
String password = conf.getString(JDBC_PASSWORD_PROPERTY, "");
if(jdbcUrl != null) {
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.JDBC_DRIVER_PROPERTY,
driver);
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.JDBC_URL_PROPERTY,
jdbcUrl);
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.JDBC_USERNAME_PROPERTY,
username);
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.JDBC_PASSWORD_PROPERTY,
password);
}
}
Amedeo
> On 12 Jun 2017, at 16:49, Nikita Timofeev <[email protected]> wrote:
>
> Well, it seems like you can't use this Cayenne feature as Bootique
> overwrites it with it's custom logic for resolving DataSource
> properly.
> So the only option I can see for you in this case is to delete
> connection information from the model and use Bootique config from
> Bootique app and cayenne.jdbc.* properties for other apps.
>
> On Mon, Jun 12, 2017 at 5:31 PM, Pascal Robert <[email protected]> wrote:
>> Tried that, no luck (at least with the Bootique app):
>>
>> java
>> -Dcayenne.jdbc.url="jdbc:mysql://xx.xx.xx.xx:3306/filemaker?connectTimeout=0&autoReconnect=true"
>> -jar RevendeursWeb-1.0.jar --config=config.yml —server
>>
>> Still connect to the URL defined in the model.
>>
>>> Le 12 juin 2017 à 09:32, Nikita Timofeev <[email protected]> a
>>> écrit :
>>>
>>> Hi Pascal,
>>>
>>> Yes you can setup DataSource via PropertyDataSourceFactory[1] that can
>>> read all information from runtime properties.
>>> All you need is to provide those properties via env variables or
>>> directly in your code like this (this code for the latest 4.0
>>> version):
>>>
>>> ServerRuntime cayenneRuntime = ServerRuntime.builder()
>>> .addConfig("cayenne-project.xml")
>>> .addModule(binder -> {
>>> ServerModule.contributeProperties(binder)
>>> .put("cayenne.jdbc.driver", "com.mysql.Driver")
>>> .put("cayenne.jdbc.url", "jdbc:mysql://127.0.0.1:3306/");
>>> })
>>> .build();
>>>
>>> [1]
>>> http://cayenne.apache.org/docs/4.0/api/org/apache/cayenne/configuration/server/PropertyDataSourceFactory.html
>>>
>>> On Mon, Jun 12, 2017 at 3:59 PM, Pascal Robert <[email protected]> wrote:
>>>>
>>>>> Le 9 juin 2017 à 11:37, Andrus Adamchik <[email protected]> a écrit :
>>>>>
>>>>> The easiest thing is to remove the DataNode from CayenneModel completely,
>>>>> and use Bootique connections locally, in production and in other
>>>>> environments.
>>>>
>>>> And can I set the connection information in another way for non-Bootique
>>>> apps?
>>>>
>>>>> Andrus
>>>>>
>>>>>> On Jun 9, 2017, at 6:14 PM, Pascal Robert <[email protected]> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I’m deploying my first Bootique app, which use Cayenne. In my config.yml
>>>>>> file, I set the datasource like this:
>>>>>>
>>>>>> jdbc:
>>>>>> mysql:
>>>>>> driverClassName: com.mysql.jdbc.Driver
>>>>>> url:
>>>>>> "jdbc:mysql://10.6.xx.xx:3306/filemaker?connectTimeout=0&autoReconnect=true"
>>>>>> initialSize: 1
>>>>>> username: xxxxx
>>>>>> password: xxxxx
>>>>>>
>>>>>> cayenne:
>>>>>> datasource: mysql
>>>>>>
>>>>>> But when I make a request to the app, it tries to connect to the server
>>>>>> defined in the data model, not from the configuration file.
>>>>>>
>>>>>> INFO [2017-06-09 15:08:32,255] bootique-http-36
>>>>>> o.a.c.c.XMLDataChannelDescriptorLoader: Loading XML configuration
>>>>>> resource from
>>>>>> jar:file:/opt/bin/RevendeursWeb-1.0.jar!/cayenne-filemaker.xml
>>>>>> INFO [2017-06-09 15:08:32,278] bootique-http-36
>>>>>> o.a.c.c.XMLDataChannelDescriptorLoader: Loading XML DataMap resource
>>>>>> from jar:file:/opt/bin/RevendeursWeb-1.0.jar!/mysql.map.xml
>>>>>> INFO [2017-06-09 15:08:32,332] bootique-http-36
>>>>>> o.a.c.c.XMLDataChannelDescriptorLoader: Loading XML DataMap resource
>>>>>> from jar:file:/opt/bin/RevendeursWeb-1.0.jar!/revendeurs.map.xml
>>>>>> INFO [2017-06-09 15:08:32,338] bootique-http-36
>>>>>> o.a.c.c.XMLDataChannelDescriptorLoader: Loading XML DataMap resource
>>>>>> from jar:file:/opt/bin/RevendeursWeb-1.0.jar!/utilisateurs.map.xml
>>>>>>
>>>>>> INFO [2017-06-09 15:08:32,366] bootique-http-36
>>>>>> o.a.c.d.DriverDataSource: Connecting to
>>>>>> 'jdbc:mysql://legestionnaire.druide:3306/filemaker' as 'filemaker'
>>>>>> INFO [2017-06-09 15:08:32,413] bootique-http-36
>>>>>> o.a.c.d.DriverDataSource: *** Connecting: FAILURE.
>>>>>>
>>>>>> What’s the trick?
>>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Nikita Timofeev
>>
>
>
>
> --
> Best regards,
> Nikita Timofeev