Fichier : applicationContext.xml
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
<bean id="quoteroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:jdbc/quoterodb"/>
</bean>
Dans le bean sessionFactory :
<property name="hibernateProperties">
<props>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.current_session_context_class">jta</prop>
<prop key="hibernate.connection.release_mode">after_statement</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
<prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop>
</props>
</property>
Fichier : deploy/quotero-ds.xml
<datasources>
<local-tx-datasource>
<user-name>postgres</user-name>
<driver-class>org.postgresql.Driver</driver-class>
<jndi-name>jdbc/quoterodb</jndi-name>
<password>********</password>
<connection-url>jdbc:postgresql://192.168.1.143/quotero_db</connection-url>
<max-pool-size>400</max-pool-size>
<min-pool-size>100</min-pool-size>
<blocking-timeout-millis>500000</blocking-timeout-millis>
</local-tx-datasource>
</datasources>
Fichier : deploy/jbossjca-service.xml
<!-- Enable connection close debug monitoring -->
<attribute name="Debug">false</attribute>
Cette valeur est à modifier côté client. Dans l'outil de test de charge, un champ de texte permet de spécifier cette valeur.
La valeur par défaut est fixée à 30000ms.
Remarque : il faut appliquer la méthode setTimeout() sur toutes les instances des contrôleurs.
Par exemple : documentController.getServiceClient().getOptions().setTimeOutInMilliSeconds(120000);
L'erreur "Too many open files" peut être résolue en exécutant la commande (dans une console en root) :
# ulimit -n <files number>
La valeur par défaut s'obtient avec limit -n
Mettre à jour le script de lancement de JBoss (fichier ~/jboss-xxx/bin.run.conf) en modifiant les paramètres d'allocation de la mémoire transmis à la JVM.
Par exemple :
#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms512m -Xmx2048m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi
Données par défaut : -Xms128m -Xmx512m
# Note: Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction). You might
# also need to raise shared_buffers to support more connections.
max_connections = 400 # (change requires restart)
[...]
shared_buffers = 12MB # min 128kB or max_connections*16kB
Par défaut :
max_connections = 200
shared_buffers = 24MB
Démarrage des esclaves :
java -Xmx768m -jar slave.jar -p 1664 2>/dev/null 1>/dev/null &
S'assurer que la machine virtuelle dispose de suffisamment de mémoire vive.