Lors de la tentative de connexion à une base de données définie en lecture seule, la connexion ne peut pas être établie. Je reçois l'erreur suivante:Connexion à une base de données en lecture seule
Cannot create PoolableConnectionFactory (Io exception: The Network Adapter could not
establish the connection)
L'application doit fonctionner en mode lecture-écriture et gérer automatiquement le commutateur en lecture seule en contrôlant uniquement la propriété isReadOnly de l'objet de connexion. L'application s'exécute correctement lors de la connexion à une base de données en lecture-écriture, mais échoue lorsque je passe à la chaîne de connexion ci-dessous (avec les informations de sécurité supprimées). J'ai vérifié que la chaîne de connexion est correcte, donc le problème ne réside pas là. J'ai des difficultés à essayer de comprendre par où commencer à chercher.
ca.businesssolutions.nbs.jdbc.connect=jdbc:oracle:thin:unicorn_read_only/[email protected](DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=9999)))(CONNECT_DATA=(SID=SBSBTST)(SERVER=DEDICATED)))
J'ai hérité de l'application et je ne suis pas sûr que ce soit une limitation du cadre de printemps ou un autre paramètre qui me manque.
La configuration de ressort pour la source de données est:
<bean id="dataSource" class="ca.businesssolutions.nbs.server.base.datasource.MyBasicDataSource"
destroy-method="close">
<!--url and driver class name are set through Configuratoin object.-->
<property name="initialSize" value="10"/>
<property name="maxActive" value="-1"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="accessToUnderlyingConnectionAllowed" value="true"/>
</bean>
Le constructeur Source de données:
public MyBasicDataSource() {
super();
setUrl(Configuration.get(Configuration.CONNECT));
setDriverClassName(Configuration.get(Configuration.DRIVER_NAME));
//The initial number of connections that are created when the pool is started.
int numConnections = 10;
try {
numConnections = Integer.parseInt(Configuration.get(Configuration.NUMBER_OF_CONNECTIONS));
} catch (Exception exception) {
// Do nothing.
}
setInitialSize(numConnections);
//The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit.
setMaxActive(-1);
setValidationQuery("SELECT 1 FROM DUAL");
setAccessToUnderlyingConnectionAllowed(true);
DataAccessObject.setDataSource(this);
}
Quoi d'autre aide?
Merci. J'ai trouvé la faute de frappe. C'était un nom d'hôte impossible à résoudre. – jgreep