If Cayenne tries to do a DB connection and fails (something like this):
org.objectstyle.cayenne.access.QueryLogger - — will run 1 query.
org.objectstyle.cayenne.access.QueryLogger - Opening connection: jdbc:sybase:Tds:host:port/db
org.objectstyle.cayenne.access.QueryLogger - *** Connecting: FAILURE.
java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to
this exception for the reason(s).
When Cayenne tries to reconnect, it should read and encode the DB password through the encoders again. (Although this probably only makes sense if not stored in the model.) The above example occurred when the DB password changed, and even though the password was stored outside the model (in an external file), Cayenne has the password cached and will not re-read it to obtain the new password.
If Cayenne can re-read the password, then DB password changes can be done without bringing an application server down or doing migrations. (This particular application was running from a WAR file.)