Installation de Puppet Serveur

April 17th, 2010 No comments

En recherchant un outil d’administration centralisée pour l’intégration et les mise à jour automatique de mes machines, je suis tombé sur puppet (http://www.puppetlabs.com/misc/download-options/)

Cet outil m’a conquis de part sa sémantique (required, notify …) orientée infrasctructure  et même sa communauté

(http://groups.google.com/group/puppet-users?hl=en)très réactive.

Je vous présente ici comment l’installer et l’utiliser:

Architecture :

Architecture

Architecture

1. Installation de Puppet Serveur ou Master:

# Tester le hostname en tapant la commande suivante sur la console:

puppet-master@ hotsname -f

# Résultat

puppet-master

# Modifier le FQN dans  /etc/hosts avec votre éditeur de texte (j’utilise nano dans mon cas)

# Avant

127.0.0.1 localhost
127.0.0.1 puppet-master

# Après

127.0.0.1 puppet-master.localhost.loc puppet-master localhost
127.0.0.1 puppet-master

# Faire un nouveau test du hostname:

puppet-master@ hotsname -f

#Résultat

puppet-master.localhost.loc

# Install puppet master

puppet-master@ aptitude install puppetmaster puppet

# Tester puppet

puppetd --test

# Résultat

 info: Retrieving plugin err: /File[/var/lib/puppet/lib]:
Failed to retrieve current state of resource: Could not retrieve information from source(s)
puppet://puppet/plugins Read more...
Categories: Debian, Linux topics, Puppet, Ubuntu Tags: ,

Le cloud pour les applications java

May 22nd, 2010 No comments

Après le rachat de sprinsource par vmware le mois d’août 2009, vmware s’associe avec salesforce en mettant leur expertise à la disposition des datacenter. Les applications java, seront sur le cloud. A dire que la GREEN IT n’est pas qu’un simple mot …

lire la suite ici:

http://blog.springsource.com/2009/08/10/springsource-chapter-two/

http://blog.springsource.com/2010/04/27/vmforce-spring-cloud/

http://www.vmforce.com/

Categories: Divers, Java, Spring Tags: , ,

Lister le contenu d’un dépôt local debian

May 5th, 2010 No comments

J’ai mis en place un dépôt local sous Ubuntu sr.sh.

Je voulais par la même occasion lister le contenu des sections.

Voici un script sr.sh qui pourrais vous aider à le faire:

#!/bin/bash
# USAGE 2: sr.sh "deb http://www.glm-webdesign.com/debian <codename> $section1 $section2 $section3"
read protocol url dist section1 section2 section3 section4 << EOF
     $(echo $1)
EOF
for sec in $section1 $section2 $section3 $section4; do
printf "Packages in section $sec: \n"
wget -q -O - $url/dists/$dist/$sec/binary-i386/Packages.gz \
|zgrep -E "^Package|^Version|^Description|^$"
printf "\n"
done

Ordinateur du futur: innovation technologique

June 5th, 2010 No comments

Nouvelle invention: The SixthSens, une technologie composée de webcam, picoprojecteur, micro et c’est tout, que Pranav Mistry ( PhD qui travaille au MIT) nous présente lors d’une conférence au TED.
Vous pouvez choisir le sous-titre en cliquant sur View Subtitles et choisissez la langue que vous voulez. Incroyable mais vrai;  des Post-It interactifs, des gants qui remplacent la souris … Dites moi ce que vous en pensez.

Tout cela pour dire que l’idée est plus importante pour l’innovation que l’argent.

Categories: Divers, Innovation Tags:

Erreur joomla

June 5th, 2010 No comments

Si vous avez créer votre site web avec joomla et que vous une erreur du genre:

Warning: cannot yet handle MBCS in html_entity_decode() ...
Warning: cannot yet handle MBCS in html_entity_decode() ...
Warning: cannot yet handle MBCS in html_entity_decode() ...

Ce message vient d’un bug de php 4 et aussi à certains changment dans la version 1.15 de joomla.

La solution consiste:

  • soit faire un upgrade de la version de php 4 –> php 5
  • soit faire le changement suivant:

remplacer la ligne 209

$item->name = html_entity_decode($name, ENT_COMPAT, 'UTF-8');

du fichier libraries/joomla/application/pathway.php par

$item->name = html_entity_decode($name);

de votre site web par cette solution est décrite ici.

Categories: Divers, web Tags:

installation sun-java6 sous ubuntu 10.04 LTS

June 29th, 2010 2 comments

Pour ceux qui ne peuvent pas se passer de sun-java6, sachez que celui a été retiré de la section multiverse des dépôts Ubuntu 10.04 LTS et mis dans la section partner. Donc si vous voulez l’installer voici la procédure à suivre:

Soit l’ajouter automatiquement avec le nouvel outil add-apt-repository

add-apt-repository “deb http://archive.canonical.com/ lucid partner”

Soit manuellement en éditantavec le privilège root et ajouter la ligne:

deb http://archive.canonical.com/ lucid partner

dans le fichier /etc/apt/source.list.

mettez à jour le cache local

 aptitude update

installez maintenant sun-java6

aptitude install sun-java6-jre sun-java6-bin
Categories: Divers, Java, Ubuntu Tags: ,

Virtualbox et windows Serveur 2008

June 30th, 2010 No comments

Pour ceux qui n’ont pas l’habitude d’installer virtualBox sur Windows Serveur 2008.

Il peut arriver que l’interface réseau (eth0 par défaut) ne soit pas détectée du premier coup lorsque vous démarez votre VM.

Même en changeant les paramètres réseaux de VirtualBox en NAT, host-only Adapter ou alors bridged Adapter.

La solution est dans la commande:

cat /proc/net/dev

Inter-| Receive                       | Transmit
 face |bytes     packets errs drop ...|bytes      packets errs...
 lo:27817701  245303  0    0    ... 27817701   245303  0...
 eth1:241239220 1419983 0    0    ... 1835570110 1900564 0...

Cette commande vous afficher le nom de l’interface (eth1) qui reçoit les traffics réseaux qui doit figurer dans le fichier

Modifier le nom de l’interface par défaut(eth0)  avec le nouveau (eth1) dans

/etc/network/interfaces

J’espère que cela vous aidera.

Mise en place d’une base de connaissances

July 5th, 2010 No comments

Contexte

Travaillant chez un éditeur de logiciel, nous avons décidé de faire du support niveau 3, c’est à dire  correction de bugs et problèmes fonctionnels uniquement.

Sauf que tous les jours, nous recevons pratiquement les mêmes appels venant de nos clients pour les supports niveau 1 et 2. Nous étions obligés de répondre à chaque utilisateur alors que ces derniers disposaient également des manuels du logiciel. Nous avons donc décider, pour désengorger tout cela de mettre en place un outil avec les descriptions succintes du mode opératoire de chaque module.

Objectifs: Création d’une base de connaissances

qui nous permettra de documenter les meilleures pratiques et les solutions aux problèmes courants.

La base de connaissances constitue un outil efficace de partage des connaissances ; en partageant les connaissances collectives, elle stimule la productivité du support et contribue à une gestion effective des connaissances. Elle permet également aux techniciens de support de trouver rapidement des solutions aux problèmes et améliore ainsi significativement le temps moyen de résolution des problèmes.

Caractéristiques:

L’outil choisi doit avoir les fonctionnalités qui faciliterait la gestion des connaissances :

  • Construit facilement notre base de  connaissances.
  • Recherche dans la base de connaissances par mots clés.
  • Doit permettre aux utilisateurs finaux d’accéder uniquement aux problèmes simples à résoudre.
  • Regroupe les solutions et documentation par module et sous-module afin de faciliter l’accès ultérieur.
  • Doit facilite un accès rapide aux solutions les plus populaires et les plus récentes à l’aide de vues prédéfinies.

Avantages

  • Le référentiel de solutions centralisées évite la duplication des efforts.
  • Le partage efficace des connaissances améliore la productivité globale.
  • Les utilisateurs obtiennent des réponses pertinentes, quel que soit le technicien qui s’occupe de leur problème.
  • Les premiers appels sont résolus plus rapidement.
  • Les utilisateurs finaux ont accès 24h/24 et 7j/7 aux réponses aux problèmes courants à partir de leur navigateur.
  • Réduit la charge de travail de notre centre d’assistance.

A la suite de mes recherches, je suis donc tombé sur Knowledgeroot, open-source facile à ‘installation [ 2 minute chrono] que j’utilise actuellement et qui fonctionne parfaitement.

Vous pouvez également utilisez certains outils comme:

Knownledge Mapper ici

Ou phpMyFaq

Pour plus de détails sur la comparaison des outils de gestion de base de connaissances ici.

J’espère que ce billet vous aidera dans vos choix.

The class not found in jar file: mxmlc.jar

July 24th, 2010 No comments

Nous utilisons ANT pour compiler nos projets Flex Builder 3 et avons décidé de passer à Flash Builder 4.  Malheureusement à la compilation des tâches Ant nous avions ce message:

The class not found in jar file: mxmlc.jar


La solution: Faire pointer le bon jar (flexTasks) comme ci-dessous

<taskdef resource="flexTasks.tasks" classpath="FLEX_ANT/lib/flexTasks.jar" />

Dans vos balises de compilation mxmlc:

faire pointer le fichier de configuration (flex-config.xml) à charger comme dans l’exemple suivante:

<mxmlc file="${src.home}/Main.mxml"
       output="${build.home}/Main.swf"
       actionscript-file-encoding="UTF-8"
       keep-generated-actionscript="false"
       incremental="false" debug="false"
       context-root="${deploy.context.root}"
       warnings="false">
     <load-config filename="FLEX_INSTALL_DIR/frameworks/flex-config.xml" />
     <source-path path-element="${src.home}"/>
</mxmlc>

Voilà, votre compilation va fonctionner parfaitement.

Connexion Internet très lente

July 24th, 2010 No comments

Il peut arriver que votre connexion internet soit très lente, avant de vous en prendre à votre ordinateur ou de changer de RAM ou tout autre matériel, pensez à désactiver IPv6:  pourquoi ?

Ce procédé n’est pas vrai dans tous les cas car j’ai résolu un problème similaire sur mon ordinateur personnel mais au travail, notre application Web 3-tiers connait le même problème en production et la solution n’a pas été la même.

Pour désactiver IPv6, dans votre navigateur tapez ceci about:config

Quand vous avez le message d’avertissement: cliquez sur I’II be carefull, I promise:

Dans la prochaine page, vous accedez à toutes les variables de configuration que vous pouvez modifier en double-cliquant.

Dans notre cas, en tapant ipv6, la variable s’affiche, s’il est à true, double-cliquer pour le mettre à false.

Plus de détails sur http://ipv6.com/ (en)

Categories: Divers, Firefox, web Tags: , ,

Profiling et montée en charge logiciel

August 14th, 2010 No comments

Profiling et montée en charge logiciel

Lorsque nous développons des Applications, il est important de penser à la finalité car l’utilisateur final peut décider ou pas d’acheter un logiciel à cause de la performance (chargement d’un module ou d’une page par exemple). Il ne faut absolument pas vouloir optimiser au début, cela peut nuire à l’avancement  de votre projet.

Le but de cet article est de vous donner quelques pistes lorsque vous voulez faire vos tests de performance logiciel, sans pour autant être spécialiste du domaine.

Cet article est divisé en deux parties: Read more…

Categories: Java, profiling, Test Tags: , , ,

sun-java ou openJDK sous Ubuntu

August 1st, 2010 No comments

Etant donné que la JVM (Java Virtual Machine) par défaut de Ubuntu est celle de OpenJDK.

Si vous voulez utiliser celle de sun que vous venez d’installer: la procédure d’installation est décrite dans ma précédente article ici intitulé installation sun-java6 sous ubuntu 10.04 LTS.

Voici comment faire (cf figure ci-dessous):

Switch openJDK ou sun-java on ubuntu

Command à taper:

update-alternatives --config java
Entrez le numéro correspondant à la version de java que vous souhaitez utiliser: ici c'est 2.

Et voilà tout.

slow query log: activation Log MySQL

August 14th, 2010 No comments

Comment activer les logs des requêtes dans MySQL.

Si vous voulez connaitre vos requêtes SQL les plus lentes dans MySQL, voici comment procéder pour son activation:

Créer manuellement les fichiers suivants et changer les permissions:

 mkdir /var/log/mysql
 touch /var/log/mysql/log-slow-queries.log
 chown mysql.mysql -R /var/log/mysql

Dans le fichier /etc/mysql/my.cnf, ajouter les lignes suivantes:

[mysqld]

 set-variable=long_query_time=10

 log-slow-queries=/var/log/mysql/log-slow-queries.log

 log-queries-not-using-indexes

1. La première ligne sous [mysqld] est la durée maximale que doit prendre une requête si celle-ci dépasse 10 secondes, cette requête est enregistrer dans le fichier /var/log/mysql/log-slow-queries.log.

2. La deuxième ligne est le chemin d’accès du fichier des logs.

3. La dernière ligne demande à MySQL d’enregistrer toutes les requêtes n’utilisant aucun index.

Categories: Divers, Log, MySQL, profiling, Test Tags: , ,

Administration et monitoring Tomcat:PSI-probe

August 15th, 2010 No comments

Tomcat est le serveur web (conteneur de servlets) bien connu de la fondation Apache séduit par sa robustesse et sa simplicité.

Il en va de soit que sa supervision n’est pas aussi évidente lorqu’il est déployer sur un site en production.

Pour ceux qui ont connu le projet “Tomcat-Probe“, qui a été renommé en Lambda-probe avant de rentrer dans une phase d’inactivité encore effective aujourd’hui.  Sachez que la communauté Open Source a repris le développement de l’outil d’Administration et de monitoring de Tomcat renommé: PSI-probe.

Fonctionnalités:

PSI-probe dans sa version 2.0.2 propose des fonctionnalités très diverses :

  • Gestion des applications déployées (affichage des sessions et de leurs détails, désactivation de celles-ci), de leurs composantes (connexions JDBC) ;
  • Gestion des datasources, visualisation de leurs taux d’engorgement ;
  • Déploiement d’applications ;
  • Affichage des logs Tomcat et des logs applicatifs ;
  • Informations sur les processus en cours ;
  • Gestion en clusters ;
  • Informations système de l’hôte ;
  • État du serveur.

PSI-probe gère en effet les utilisateurs en plusieurs rôles, ce qui devrait intéresser les environnements fortement industrialisés dans lesquels plusieurs utilisateurs d’équipes différentes doivent accéder à certaines statistiques ou actions selon leurs fonctions. Les développeurs ont mis l’accent sur la gestion des instances de serveurs en cluster qui est implémentée nativement.

Le logiciel est proposé sous forme d’application web qui se déploie naturellement sous Tomcat, mais aussi sous JBoss de façon triviale. L’ancien site de LambdaProbe propose des captures d’écran et une démonstration en ligne (d’une ancienne version 1.7).

Installation:

  • Télécharger et dézziper le fichier probe-version.zip,
  • copier le fichier probe.war dans le repertoire webapps de votre tomcat.
  • Modifier le fichier tomcat-users.xml (voici un exemple)
       <?xml version='1.0' encoding='utf-8'?>
        <tomcat-users>
                    <role rolename="manager"/>
                    <role rolename="admin"/>
                    <role rolename="probe"/>
            <user username="probe" password="probe" roles="admin,manager"/>
       </tomcat-users>
  • Démarrer Tomcat et lancer http://localhost:8080/probe
  • Entrer le login(probe) et le mot de passe (probe) si vous avez mis probe dans votre fichier tomcat-users.xml.

Plus d’informations: psi-probe

Voici un exemple de capture d’écran:

Tomcat sur le port 80 avec iptables

September 27th, 2010 No comments

Avec Linux, sauf l’utilisateur root a le privilège sur les (1-1024). Et pour des raisons de sécurité et d’autres raisons nous pouvons mettre l’utilisateur tomcat comme root.

Pour utiliser votre application J2EE sur le port 80, il suffit de connaitre la syntaxe des commandes iptables dont voici:

1. Connectez vous en tant que root:

sudo su

2. Tapez cette ligne de commande:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

3. Sauvegarder la configuration

iptables-save > /etc/sysconfig/iptables

Donc pour acceder au localhost, vous devriez allez sur le port 8080.

J’espère que cela va vous aider.

Categories: Debian, iptables, tomcat, Ubuntu, web Tags:

Java Swing : Ajout dynamique des composants

February 5th, 2012 No comments

Voici un code d’ajout dynamique de composants avec Swing.

J’utilise les GridBagLayout comme stratégie de placement. Il y a également une partie de fonctionnalités qui n’est pas terminée

par exemple la suppression d’une ligne etc. Mais bon c’est l’ajout dynamique qui était le plus important pour moi et

que je souhaite partager et vous pouvez le télécharger ici.

package test;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class AjoutDynamique implements ActionListener{

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new AjoutDynamique().createAndShowGUI();
            }
        });
    }

    private JFrame frame;
    private JPanel panel = new JPanel(new GridBagLayout());

    private Map<String, Component> dynamicButtons =
                        new HashMap<String, Component>();

    private GridBagConstraints constraints = new GridBagConstraints();

    private List<JComponent> fields = new ArrayList<JComponent>();

    private JButton button1 = new JButton("Ajouter");
    String files = null;
    int y=3;

    private JPanel btnAppliqueAnnuler() {
        //JPanel p = new JPanel(new GridLayout(3, 1));

        JPanel p1 = new JPanel();
        Box box1 = new Box(BoxLayout.X_AXIS);
        box1.add(Box.createHorizontalGlue());

        JButton btnAppliquer = new JButton("Appliquer");
        box1.add(btnAppliquer);

        /**
         * Lorsqu'on clique sur le bouton Appliquer
         */
        btnAppliquer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAppliquerActionPerformed(evt);
            }
        });

        box1.add(Box.createHorizontalStrut(15));

        JButton btnAnnuler = new JButton("Annuler");

        /**
         * Lorsque clique sur le bouton Annuler
         */
        btnAnnuler.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnnulerActionPerformed(evt);
            }
        });

        box1.add(btnAnnuler);
        box1.add(Box.createHorizontalGlue());
        p1.add(box1);
        p1.setBorder(BorderFactory.createRaisedBevelBorder());

        return p1;
    }

    /**
     *
     */
    private void btnAppliquerActionPerformed(ActionEvent evt) {
        //JOptionPane.showInputDialog("Clique sur Appliquer");
        //JOptionPane.showMessageDialog(null," Clique sur Appliquer");
        if (nom.getText().isEmpty() || ext.getText().isEmpty() ||
                       !repertoire.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null," Clique sur Appliquer");
        }
    }

    /**
     *
     */
    private void btnAnnulerActionPerformed(ActionEvent evt) {
        JOptionPane.showMessageDialog(null," Clique sur Annuler");
    }

    private JPanel p = new JPanel();
    protected void createAndShowGUI() {
        try {
             UIManager.setLookAndFeel(
             "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (UnsupportedLookAndFeelException ex) {
            ex.printStackTrace();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        }

        createHeader();
        addRowBelow();
        constraints.gridx=4;
        constraints.gridy=0;
        panel.add(button1,constraints);

        JButton bouton2 = new JButton("Appliquer");
        constraints.gridx=4;
        constraints.gridy=1;
        panel.add(bouton2,constraints);

        p = btnAppliqueAnnuler();
        constraints.gridx=4;
        constraints.gridy=y+7;
        panel.add(p,constraints);

        frame = new JFrame("Add Button Dynamically");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JScrollPane(panel));
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        button1.addActionListener(this);

        JRootPane root = frame.getRootPane();
        root.setDefaultButton(button1);
        frame.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent we){
                System.exit(0);
            }
        });
    }

    private void addColumn(String labelText) {
        constraints.gridx = fields.size();
        constraints.gridy = 1;
        panel.add(new JLabel(labelText), constraints);
        constraints.gridy=2;

        final JTextField field=new JTextField(40);
        field.setEditable(false);
        panel.add(field,constraints);
        fields.add(field);
    }

    private void createHeader() {
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.insets = new java.awt.Insets(10, 10, 10, 10);
        constraints.fill = GridBagConstraints.HORIZONTAL;

        final JLabel lblTitre = new JLabel("Cliquez sur Ajouter");
        lblTitre.setFont(new Font("Arial", 0, 18));
        panel.add(lblTitre, constraints);

        constraints.gridx=0;
        constraints.gridy=1;
        final JLabel lblNom = new JLabel("Nom");
        lblNom.setFont(new Font("Arial", 0, 11));
        panel.add(lblNom, constraints);

        constraints.gridx=1;
        constraints.gridy=1;
        final JLabel lblExt = new JLabel("Ext");
        lblExt.setFont(new Font("Arial", 0, 11));
        panel.add(lblExt, constraints);

        constraints.gridx=2;
        constraints.gridy=1;
        final JLabel lblRepertoire = new JLabel("Repertoire");
        lblRepertoire.setFont(new Font("Arial", 0, 11));
        panel.add(lblRepertoire, constraints);
        fields.add(panel);
    }

    private String chooseFolder(java.awt.event.ActionEvent evt) {
        String dirName = null;
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setMultiSelectionEnabled(false);
        fc.setDialogTitle("Select a Directory");
        fc.setApproveButtonText("Valider");
        fc.setForeground(new Color(0xFF, 0xFF, 0xFF));
        int result = fc.showOpenDialog(null);
        if (result == JFileChooser.APPROVE_OPTION) {
            dirName = fc.getSelectedFile()
                   .getAbsolutePath();
        } else {
            System.out.println("Op?©ration annulÔø?e");
        }
        return dirName;
    }

    private JTextField nom;

    private JTextField ext;

    private JTextField repertoire;

    private JButton folder;

    private JButton delete;

    private JLabel supprimer;

    private void addRowBelow() {
        int x = 0;
        y++;
        constraints.gridy=y;
        //System.out.println(fields.size());
        System.out.println("SIZE addRowBelow : " + fields.size());
        for (x=0;x < fields.size();x++) {
            constraints.gridx=x;

            constraints.insets = new java.awt.Insets(10, 10, 10, 10);
            constraints.fill = GridBagConstraints.HORIZONTAL;

            nom = new JTextField(10);
            nom.setName("nom"+y);
            nom.setEditable(true);
            panel.add(nom, constraints);
            constraints.gridx=x+1;
            addComponent(nom.getName(), nom);

            ext = new JTextField(6);
            ext.setName("ext"+y);
            addComponent(ext.getName(), ext);

            ext.setEditable(true);
            panel.add(ext, constraints);
            constraints.gridx=x+2;

            repertoire = new JTextField(30);
            repertoire.setName("repertoire"+y);
            addComponent(repertoire.getName(), repertoire);
            ext.setEditable(true);
            panel.add(repertoire, constraints);
            constraints.gridx=x+3;

            folder = new JButton("?");
            folder.setName("folder"+y);
            addComponent(folder.getName(), folder);
            folder.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    String dirName = null;
                    JFileChooser fc = new JFileChooser();
                    fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                    fc.setMultiSelectionEnabled(false);
                    fc.setDialogTitle("Select a Directory");
                    fc.setApproveButtonText("Valider");
                    fc.setForeground(new Color(0xFF, 0xFF, 0xFF));
                    int result = fc.showOpenDialog(null);
                    if (result == JFileChooser.APPROVE_OPTION) {
                         repertoire.setText(
                         fc.getSelectedFile().getAbsolutePath());
                    } else {
                        System.out.println("Op?©ration annulÔø?e");
                    }
                }
            });
            panel.add(folder, constraints);
            constraints.gridx=x+4;

            delete = new JButton("?");
            addComponent(delete.getName(), delete);
            delete.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    System.out.println("Nom " + delete.getName());
                    //removeComponent(getY(delete.getName()));
                    if (!repertoire.equals("") || !repertoire.equals(null)) {
                        JOptionPane.showMessageDialog(null,delete.getName(),"Error",
                             JOptionPane.ERROR_MESSAGE);
                    }
                    else{
                        JOptionPane.showMessageDialog(null, delete.getName());
                    }
                }
            });
            panel.add(delete, constraints);
            constraints.gridx=x+5;

            supprimer = new JLabel("Supprimer");
            supprimer.setName("supprimer"+y);
            addComponent(supprimer.getName(), supprimer);

            panel.add(supprimer, constraints);
            constraints.gridx=x;
            constraints.gridy=y;
            panel.add(new JSeparator(), constraints);
        }
    }

    public void addComponent(String name, Component comp) {
        dynamicButtons.put(name, comp);
        panel.invalidate();
    }

    public void actionPerformed(ActionEvent ae){
        if("Ajouter".equals(ae.getActionCommand())) {
            addRowBelow();
            frame.pack();
            frame.setLocationRelativeTo(null);
        }
    }
}
Categories: Divers, Java Tags:

Comment utiliser votre projet NetBeans dans Eclipse

February 5th, 2012 No comments

Vous voulez construire votre application avec Netbeans en utilisant les composants graphiques Swing et  l’utiliser par la suite dans Eclipse.

Voici la démarche à suivre en supposant que votre espace de travail est dans:

c:\dev\projects\netbeans_workspace

I – NETBEANS 7.x

1) Ouvrir NebBeans.
2) Créer un nouveau projet java que vous appeler “PourEclipse”.
3) Lancer le build “click droit, Build”.

Netbeans va créer beaucoup de fichiers et répertoires.
Les fichiers qui nous intéressent sont:

"c:\dev\projects\netbeans_workspace\PourEclipse\dist"

et

"c:\dev\projects\netbeans_workspace\PourEclipse\src"

II – ECLIPSE

1) Allez dans Eclipse.
2) Créer un projet java dans Eclipse et nommer le “PourEclipse”.

Netbeans va créer beaucoup de fichiers et répertoires.
Les fichiers qui nous interessent sont:

"c:\dev\projects\eclipse_workspace\PourEclipse\bin"

et

"c:\dev\projects\eclipse_workspace\PourEclipse\src"

III – EXPLORATEUR DE DOSSIERS

1) Allez dans l’explorateur de Windows.
2) Copier le fichier

"c:\dev\projects\netbeans_workspace\PourEclipse\dist\PourEclipse.jar"

3) Collez dans

"c:\dev\projects\eclipse_workspace\PourEclipse\bin"

4) Copier le répertoire poureclipse depuis

"c:\dev\projects\netbeans_workspace\PourEclipse\src"

5) Coller dans

"c:\dev\projects\eclipse_workspace\PourEclipse\src".

IV – ECLIPSE

1) Allez dans Eclipse.
2) Appuyer sur F3 ou rafraichir votre projet.
3) Vérifier que le projet est bien dans le répertoire

"c:\dev\projects\eclipse_workspace\PourEclipse\src\poureclipse"

4) Voila tout doit marcher maintenant.
5) Tester votre projet.

NOTA: Si vous avez des problèmes ou des erreurs dans eclipse:
 1. Clique droit sur le projet
 2. Build Path
 3. Add a external jar (chargez le jar depuis
"c:\dev\projects\netbeans_workspace\PourEclipse\dist\poureclipse.jar")
Categories: Divers, Java Tags: ,

Hibernate et Pool de Connexion C3P0: configuration

January 3rd, 2012 No comments

Le chargement de pilote jdb a chaque demande de connexion est couteuse. il revient donc d’utiliser un pool de connexion qui est un mécanisme permettant de créer un ensemble de connexion (instancier les connexion une fois pour toute) et de les réutiliser a la demande par un utilisateur. Hibernate vient avec un mécanisme de gestion de pool très basique. Il est est donc conseillé d’utiliser des pools performant afin de remplacer celui d’hibernate. Parmi les pools de connexion, nous pouvons citer entre autre :
- c3p0
-DBCP
et j’en passe.

Le but de cet article est de vous présenter le pool de connexon c3p0 et l’ensemble des paramètres permettant une meilleur configuration. Actuellement nous utilisons la version
c3p0-0.9.1.2. Vous pourrez toujours utiliser une version supérieure s’il y en a.

Hibernate configuration
Avant de donner dans les détails la signification des différents paramètres de configuration, nous vous donnons un exemple de configuration hibernate.
Certains paramètres sont à inclures dans le fichier hibernate.hbm.xml qui est le fichier de configuration par défaut, et d’autres paramètres eux se trouvent dans un fichier c3p0.properties. Il faut souligner que ces deux fichiers doivent se situer a la racine du classpath (Dans notre cas, ces fichiers se trouvaient ensemble dans le même répertoire)

hibernate.cfg.xml

< name=”c3p0.acquire_increment”>3< /property>
< name=”hibernate.c3p0.min_size”>2< /property>
< name=”hibernate.c3p0.max_size”>50< /property>
< name=”hibernate.c3p0.timeout”>3600< /property>
< name=”hibernate.c3p0.max_statements”>0< /property>
< name=”hibernate.c3p0.idle_test_period”>3600< /property>
c3p0.properties
c3p0.automaticTestTable =c3p0Test
c3p0.testConnectionOnCheckin=true
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=60
c3p0.breakAfterAcquireFailure=false

Basic Pool Configuration

initialPoolSize, minPoolSize, maxPoolSize definit le nombre de connexion qui seront en pool de connexion
il faut savoir que le nombre de connexion augmente lorsque les utilisateurs en demande. Si le maxPoolSize n’est pas précisé,
ce nombre va augmenter jusqu’a faire tomber le système. Lorsqu’on se rend compte qu’on aurra beaucoup d’utilisateur, il est toujours
intéressant d’augmenter le maxPoolSize, au lieu de demande au client d’attendre une nouvelle connexion.

acquireIncrement determine combien de clients peuvent etre en attente de connexion s’il n’ya plus de connexion
Le nombre de connexion diminue quant le pool test une connexion et trouve qu’il doit etre rendu ou lorsque le temps d’attente
d’une connexion est expirée

Managing Pool Size and Connection Age

Par défaut une connexion n’expire jamais. Si vous voulez que les connexions puisse s’expirer durant le temps dans le but
de les rafraichir, positionner maxIdleTime and/or maxConnectionAge.
maxIdleTime définit combien de seconde une connexion peut etre dite unitilisée avant de le remettre dans le pool de
connexion.
Quant à maxConnexionAge (?????)

maxIdleTimeExcessConnections permet de minimizer le nombre de connexion conservée par c3p0 lorsque le pool n’est
pas sous la charge. Par défaut le pool c3p0 augmente, et seulement diminue lorsqu’il ya echec de connexion ou une connexion qui
s’expire. Certains utilisateurs veulent que les pool rapidement libère les connexions après un pic (charge) dans l’usage qui force un pool large.
Vous pouvez y arriver en fixant une valeur de maxIdleTimeExcessConnections plus petit que maxIdleTime, forcant le nombre de connexions
supérieur au maximum à être rapidement libérée
Des conseils généraux par rapport aux paramètre de timeout : doucement. Le but du pool de connexion est de réduire le cout d’acquisiton
ds connexion; Il s’agit donc d’acquérir les connexions une seule fois et de les réutiliser autant de fois que possible. La plupart des bases de
données supportent des connexions qui restent ouvertes pendant des heures. Positionner maxConnectionAge or maxIdleTime to 1800 (30 minutes)
est très agressive. Pour la plupart des bases de données, plusieurs heures seront plus appropriées; vous pouvez vous assurer de la fiabilité
des connexions en les testant Plutôt que de les jeter. Le seul paramètre qui peut positionne en des minutes or moins est maxIdleTimeExcessConnections.

Configuring Connection Testing

C3p0 peut etre configuré pour tester les différentes connexion de plusieurs manirères.Cela afin de minisimer les pertes de connexion
Les connexions du pool peuvent être dénaturé pour plusieurs raison : Certains drivers jdbc intentionnellement “time-out” certaines longues connexions sur la base
de données.Connexion peuvent etre corrompus par des bugs des drivers, lors de multiples utilisation dans le temps, ou pour des raisons diverses. On peut configurer le
test via les configuration suivantes :
* automaticTestTable
* connectionTesterClassName
* idleConnectionTestPeriod (c3p0 testera toutes les connexions toutes les nombres de seconde précisee dans le paramètre, et “uncheck-out”
* preferredTestQuery
* testConnectionOnCheckin (si vrai une opeation sera effectuee par c3p0 a chaque demande de connexion pour s’assurer que la connexion est valide.
A utiliser en conjonction avec idleConnectionTestPeriod )
* testConnectionOnCheckout (à utliser si nécessaire. c3p0 fera des tests a chaque fin d’utilisation d’une connexion pour s’assurer qu’elle est valide. Un choix
plus judicieux est de vérifier chaque connexion avec le paramètre idleConnectionTestPeriod
idleConnectionTestPeriod, testConnectionOnCheckout, and testConnectionOnCheckin controle quant les connexion doivent etre testees.
Lorsqu’on configure le test des connexions, essayez de minimiser en premier le cout de chaque test. Par défaut, les connexions sont testes en appelant
la méthode getTables() de l’objet DatabaseMetaData d’une connexion. Cela a un avantage de fonctionner avec n’importe quel base de données. Mais
empiriquement, on a constate que l’appel de getTables() est toujours plus lent qu’une simple requete. La facon la plus convenable d’augmenter la rapidité
des tests est de définir le parametre automaticTestTable. Utilisant le nom que vous mettez c3p0 créera une table vide et fera pour tester une simple requete
sur la cette table vide.
Pour tester, vous pouvez aussi definir une requete sql de test qui va etre execute par c3p0 afin de s’assurer que la connexion fonctionne. Cette requete est
definie par preferredTestQuery
Attestation une erreur sql sera généree si la requete est incorrecte ou si la table n’existe pas.
Les utilisateus avancées peuvent définir tout autre type de test qu’ils veulent en implementer l’interface ConnectionTester et en fournissant le nom de cette classe
par connectionTesterClassName.

Configuring Statement Pooling

c3p0 implémente une gestion transparente des pools de connexion des PrepareStament comme définir dans la spécification jdbc. Dans certaines circonstante
le pooling des statement peut améliorer considérablement les performances des applications. Dans d’autres circonstances au contraire, elle peut entrainer des freins
On configure le pool des des statements avec les paramètres suivants :
maxStatements
maxStatementsPerConnexion
maxStatements défini le nombre total de PreparedStatements un dataSource peut mettre en cache. Le pool detruise le moins recemment utilise lorsqu’il atteinte
cette limite.
maxStatementsPerConnection est une configuratino non standard. Elle defini le nombre de PreparedStatements par connexion à pooler.

CONFIGURATION DES PROPRIETES C3P0 avec Hibernate

Annexe A: Configuration PropertiesGo de page

c3p0 propriétés de configuration peut être divisé en JavaBeans style propriétés et d’autres propriétés.

JavaBeans style Propriétés Revenir en haut

Les propriétés suivantes peuvent être définies directement dans le code en tant que propriétés JavaBeans, via un système de propriétés ou d’un fichier c3p0.properties (avec c3p0. Préfixé au nom de la propriété), ou dans un fichier c3p0-config.xml. Voir la section sur la configuration ci-dessus. Cliquez sur le nom de propriété pour une description complète.

acquireIncrement

acquireRetryAttempts

acquireRetryDelay

autoCommitOnClose

automaticTestTable

breakAfterAcquireFailure

checkoutTimeout

connectionCustomizerClassName

connectionTesterClassName

debugUnreturnedConnectionStackTraces

factoryClassLocation

forceIgnoreUnresolvedTransactions

idleConnectionTestPeriod

initialPoolSize

maxAdministrativeTaskTime

maxConnectionAge

maxIdleTime

maxIdleTimeExcessConnections

MaxPoolSize

maxStatements

maxStatementsPerConnection

MinPoolSize

numHelperThreads

overrideDefaultUser

overrideDefaultPassword

Mot de passe

preferredTestQuery

propertyCycle

testConnectionOnCheckin

testConnectionOnCheckout

unreturnedConnectionTimeout

l’utilisateur

usesTraditionalReflectiveProxies

acquireIncrement

Par défaut: 3

Détermine le nombre de connexions à un moment c3p0 vais essayer d’acquérir lorsque la piscine est épuisé. [Voir «Configuration de pool de base&quot;]

acquireRetryAttempts

Par défaut: 30

Définit combien de fois c3p0 vais essayer d’acquérir une nouvelle connexion de la base de données avant d’abandonner. Si cette valeur est inférieure ou égale à zéro, c3p0 va continuer à essayer de chercher une connexion indéfiniment. [Voir «Configuration de la récupération des pannes de base de données&quot;]

acquireRetryDelay

Par défaut: 1000

Millisecondes, le temps d’attente entre c3p0 va acquérir tentatives. [Voir «Configuration de la récupération des pannes de base de données&quot;]

autoCommitOnClose

Défaut: faux

La spécification JDBC est impardonnable silence sur ce qui devrait arriver en suspens, les transactions en attente à la fermeture de connexion. la politique par défaut C3P0 est de retour en arrière tout solde non engagé, le travail en cours. (Je pense que c’est absolument, indéniablement la bonne politique, mais il n’y a pas de consensus parmi les fournisseurs de pilotes JDBC.) Cadre autoCommitOnClose de vraies causes non engagés l’attente de travaux à engager, plutôt que restaurée sur près de connexion. [Note:. Depuis la spec est ridiculement peu claire sur cette question, les auteurs d'applications qui souhaitent éviter les bogues et des comportements incompatibles devrait s'assurer que toutes les transactions sont explicitement validée ou restaurée-back avant la clôture est appelée] [Voir «Configuration de la gestion des transactions en suspens&quot; ]

automaticTestTable

Par défaut: null

Si cela est prévu, c3p0 va créer une table vide avec le nom indiqué, et l’utilisation des requêtes sur la table pour tester la connexion. Si automaticTestTable est fourni, c3p0 va générer sa requête propre test, donc tout ensemble preferredTestQuery seront ignorées. Vous ne devriez pas travailler avec la table nommée après c3p0 elle crée, elle doit être strictement c3p0 les utiliser dans les tests de votre connexion. (Si vous définissez votre propre ConnectionTester, il doit implémenter l’interface QueryConnectionTester pour ce paramètre pour être utile.) [Voir «Configuration d'une connexion d'essai&quot;]

breakAfterAcquireFailure

Défaut: faux

Si cela est vrai, une mise en commun DataSource se déclarera cassé et être définitivement fermés si une connexion ne peut être obtenu à partir de la base de données après avoir fait acquireRetryAttempts d’acquérir une. Si elle est fausse, l’impossibilité d’obtenir une connexion entraînera tous les threads en attente pour le pool d’acquérir une connexion à lever une exception, mais la source de données restent valables, et tenter d’obtenir à nouveau suite à un appel à getConnection (). [Voir «Configuration de la récupération des pannes de base de données&quot;]

checkoutTimeout

Par défaut: 0

Le nombre de millisecondes une getConnection client appelant () attend une connexion à être enregistrés ou acquis lorsque la piscine est épuisé. Zéro veut dire attendre indéfiniment. Cadre toute valeur positive fera l’getConnection () pour time-out et de rompre avec une SQLException après le nombre spécifié de millisecondes.

connectionCustomizerClassName

Par défaut: null

La classe entièrement qualifié-nom d’un implememtation de l’interface ConnectionCustomizer, les utilisateurs peuvent mettre en œuvre pour établir des connexions quand ils sont acquis à partir de la base de données, ou lors du check-out, et potentiellement à nettoyer les choses au check-in et la destruction de connexion. Si les propriétés de connexion standard (holdability, en lecture seule, ou TransactionIsolation) sont définies dans la onAcquire ConnectionCustomizer () de méthode, elles seront prioritaires sur les valeurs par défaut de connexion.

connectionTesterClassName

Par défaut: com.mchange.v2.c3p0.impl.DefaultConnectionTester

La classe entièrement qualifié-nom d’un implememtation de l’interface ConnectionTester, ou QueryConnectionTester si vous souhaitez cas d’avoir accès à un utilisateur-preferredTestQuery configuré. Cela peut être utilisé pour personnaliser la manière dont c3p0 Connexions DataSources test, mais avec l’introduction des paramètres de configuration et automaticTestTable preferredTestQuery », créez vos propres&quot; devrait être excessif pour la plupart des utilisateurs. [Voir «Configuration de test de connexion&quot;]

debugUnreturnedConnectionStackTraces

Défaut: faux

Si c’est vrai, et si unreturnedConnectionTimeout est fixé à une valeur positive, alors la piscine de capture trace de la pile (via une exception) de toutes les caisses de connexion, et les traces de la pile sera imprimée lorsque non restitués check-out Connections timeout. Cette mesure vise à déboguer des applications à des fuites de connexion, qui est des applications qui parfois ne parviennent pas à revenir Connexions, conduisant à une croissance de piscine et, finalement, l’épuisement (lorsque les hits piscine MaxPoolSize avec toutes les connexions check-out et a perdu). Ce paramètre ne doit être réglé pendant le débogage, comme la capture de la trace de la pile va ralentir chaque connexion check-out.

Ne prend pas en charge les remplacements par utilisateur.

factoryClassLocation

Par défaut: null

Sources de données qui sera engagée par JNDI et l’utilisation de cette interface API référençable à eux-mêmes magasin peut spécifier une URL à partir de laquelle la classe capable de déréférencement d’un entre eux peuvent être chargés. Si (comme c’est généralement le cas), les bibliothèques c3p0 sera disponible sur place pour le service JNDI, laissez cette option configurée comme nulle.

Ne prend pas en charge les remplacements par utilisateur.

forceIgnoreUnresolvedTransactions

Défaut: faux

Fortement disrecommended. Ce paramètre à true peut conduire à des bugs subtils et bizarre. Ce paramètre est terrible, le laisser seul, sauf si absolument nécessaire. Il est ici pour contourner les bases de données ventilées / drivers JDBC qui ne sont pas correctement en charge les transactions, mais qui permettent les connexions &quot;autoCommit drapeaux pour aller à de fausses indépendamment. Si vous utilisez une base de données qui prend en charge les transactions «en partie» (c’est un oxymore, comme le point de l’ensemble des transactions est d’effectuer des opérations de manière fiable et complète, mais néanmoins de nature bases de données sont là-bas), si vous vous sentez à l’aise en ignorant le fait que les connexions avec autoCommit == false peut être au milieu des transactions et des verrous peuvent et d’autres ressources, vous pouvez désactiver le comportement par défaut c3p0 sage, qui est de se protéger, ainsi que la convivialité et la cohérence de la base de données, soit par roulement en arrière ( par défaut) ou de commettre (voir ci-dessus c3p0.autoCommitOnClose) les transactions non résolues. Cela ne devrait être défini à true lorsque vous êtes sûr que vous utilisez une base de données qui permet drapeau Connections ‘autoCommit pour aller à faux, mais n’offre pas de soutien significatif d’autres des transactions. Sinon, ce paramètre à true est juste une mauvaise idée. [Voir «Configuration des transactions non résolues de manutention&quot;]

idleConnectionTestPeriod

Par défaut: 0

S’il s’agit d’un nombre supérieur à 0, c3p0 permettra de tester tous ralenti, mais les connexions regroupées décochée-out, le nombre de secondes. [Voir «Configuration de test de connexion&quot;]

initialPoolSize

Par défaut: 3

Nombre de connexions d’une piscine vais essayer d’acquérir au démarrage. Doit se situer entre MinPoolSize et MaxPoolSize. [Voir «Configuration de pool de base&quot;]

maxAdministrativeTaskTime

Par défaut: 0

Secondes avant de pool de threads c3p0 va essayer d’interrompre une tâche apparemment pendu. Rarement utile. Beaucoup de c3p0 les fonctions ne sont pas effectuées par des fils de client, mais de manière asynchrone par un pool de threads internes. c3p0 de asynchronisme améliore les performances du client directement, et minimise la longueur du temps que des verrous critiques sont détenues par s’assurer que les opérations lente jdbc sont effectuées dans les discussions non-lock-exploitation. Si, toutefois, certaines de ces tâches se &quot;bloque&quot;, c’est qu’ils ne réussissent ni échouer avec une exception pour une période de temps prolongée, pool de threads c3p0 peuvent s’épuiser et les tâches administratives sauvegardés. Si les tâches sont simplement ralentir, la meilleure façon de résoudre le problème est d’augmenter le nombre de threads, via numHelperThreads. Mais si les tâches parfois bloquer indéfiniment, vous pouvez utiliser ce paramètre pour forcer un appel à la méthode interrupt () le fil tâche si une tâche dépasse un délai fixé.

[C3p0 finira par récupérer des tâches suspendues de toute façon en signalant une "impasse apparente" (vous le verrez comme un avertissement dans les journaux), remplaçant les fils du pool de threads de travail et d'interruption () uant les fils d'origine. Mais laisser la piscine aller dans impasse apparente, puis récupérer signifie que, pour certaines périodes, c3p0 la performance sera compromise. Donc, si vous voyez ces messages, l'augmentation et la mise en numHelperThreads maxAdministrativeTaskTime pourrait aider. maxAdministrativeTaskTime devrait être assez grand pour que toute tentative resonable d'acquérir une connexion à partir de la base de données, de tester une connexion, ou deux de détruire une connexion, on peut s'attendre à réussir ou d'échouer dans le délai. Zero (par défaut) signifie tâches ne sont jamais interrompus, qui est la meilleure politique la plus sûre et la plupart des circonstances. Si les tâches sont simplement lent, allouer davantage de discussions. Si les tâches sont suspendus à jamais, essayer de comprendre pourquoi, et peut-être mise en maxAdministrativeTaskTime peut aider dans l'intervalle.

Ne prend pas en charge les remplacements par utilisateur.

maxConnectionAge

Par défaut: 0

Secondes, de manière efficace un temps pour vivre. Une connexion de plus de maxConnectionAge seront détruits et éliminés de la piscine. Cela diffère de maxIdleTime en ce qu'il renvoie à l'âge absolu. Même une connexion qui n'a pas été beaucoup ralenti seront éliminés de la piscine si elle dépasse maxConnectionAge. Zéro veut dire pas d'âge maximum absolu est appliquée.

maxIdleTime

Par défaut: 0

Secondes, une connexion peut rester groupés mais non utilisés avant d'être jetés. Zéro veut dire que les connexions inactives n'expirent jamais. [Voir «Configuration de pool de base"]

maxIdleTimeExcessConnections

Par défaut: 0

Nombre de secondes que les connexions au-delà de MinPoolSize devraient être autorisés à rester les bras croisés dans la piscine avant d’être abattus. Destiné aux applications qui souhaitent agressive minimiser le nombre de connexions ouvertes, la réduction de la piscine en arrière vers MinPoolSize si, après un pic, le niveau de charge diminue et Connexions acquis ne sont plus nécessaires. Si maxIdleTime est fixé, maxIdleTimeExcessConnections devrait être plus petit si le paramètre est d’avoir un quelconque effet. Zéro veut dire que ne sont pas appliquées, Connexions excès ne sont pas ralenti à.

MaxPoolSize

Par défaut: 15

Le nombre maximum de connexions d’une piscine se maintenir à un moment donné. [Voir «Configuration de pool de base"]

maxStatements

Par défaut: 0

La taille du cache de c3p0 PreparedStatement mondiale. Si les deux maxStatements et maxStatementsPerConnection sont nuls, la mise en cache déclaration ne sera pas activée. Si maxStatements est nul mais maxStatementsPerConnection est une valeur différente de zéro, la mise en cache déclaration sera permis, mais pas de limite globale sera appliquée, que le maximum par connexion. maxStatements contrôle le nombre total de déclarations en cache, pour toutes les connexions. S’il est défini, il devrait être un assez grand nombre, comme chaque connexion commun exige de ses propres, distincts des états troupeau mis en cache. Comme un guide, pensez à combien de PreparedStatements distinctes sont utilisées fréquemment dans votre application, et multipliez ce nombre par MaxPoolSize pour arriver à une valeur appropriée. Bien maxStatements est le paramètre JDBC standard pour la mise en cache déclaration de contrôle, les utilisateurs peuvent trouver c3p0 de maxStatementsPerConnection alternative plus intuitive à utiliser. [Voir «Configuration Déclaration de mise en commun"]

maxStatementsPerConnection

Par défaut: 0

Le nombre de PreparedStatements c3p0 cache pour une connexion unique mis en commun. Si les deux maxStatements et maxStatementsPerConnection sont nuls, la mise en cache déclaration ne sera pas activée. Si maxStatementsPerConnection est nul mais maxStatements est une valeur non nulle, la mise en cache déclaration sera activé, et une limite globale appliquée, mais sinon pas de limite sera fixée sur le nombre de déclarations en cache pour une connexion unique. S’il est défini, maxStatementsPerConnection devrait être fixé à environ le nombre PreparedStatements distincts qui sont utilisés fréquemment dans votre application, plus deux ou trois supplémentaires si rarement des déclarations ne pas forcer les déclarations plus fréquentes mises en cache pour être abattus. Bien maxStatements est le paramètre JDBC standard pour la mise en cache déclaration de contrôle, les utilisateurs peuvent trouver maxStatementsPerConnection plus intuitif à utiliser. [Voir «Configuration Déclaration de mise en commun"]

MinPoolSize

Par défaut: 3

nombre minimum de connexions d’une piscine se maintenir à un moment donné. [Voir «Configuration de pool de base"]

numHelperThreads

Par défaut: 3

C3P0 est très asynchrone. Slow opérations JDBC sont généralement effectuées par des fils d’assistance qui ne détiennent pas de serrures soutenu. La diffusion de ces opérations sur plusieurs threads peuvent améliorer sensiblement la performance en permettant à de multiples opérations à effectuer simultanément.

Ne prend pas en charge les remplacements par utilisateur.

overrideDefaultUser

Par défaut: null

Forces le nom d’utilisateur qui doit par PooledDataSources lorsqu’un utilisateur appelle la méthode getConnection () par défaut de méthode. Ceci est principalement utile lorsque les applications sont la mise en commun des connexions d’une non-c3p0 mis en commun DataSource. Les applications qui utilisent ComboPooledDataSource, ou qui enveloppent tout c3p0 mises en œuvre non mis en commun DataSource pouvez utiliser la propriété d’utilisateur simple.

Ne prend pas en charge les remplacements par utilisateur.

overrideDefaultPassword

Par défaut: null

Forces le mot de passe doit par PooledDataSources lorsqu’un utilisateur appelle la méthode getConnection () par défaut de méthode. Ceci est principalement utile lorsque les applications sont la mise en commun des connexions d’une non-c3p0 mis en commun DataSource. Les applications qui utilisent ComboPooledDataSource, ou qui enveloppent tout c3p0 mises en œuvre non mis en commun DataSource pouvez utiliser la propriété simple mot de passe.

Ne prend pas en charge les remplacements par utilisateur.

Mot de passe

Par défaut: null

Pour les applications utilisant ComboPooledDataSource ou tout c3p0 mises en œuvre par DataSources mis en commun – DriverManagerDataSource ou la source de données retourné par DataSources.unpooledDataSource (…) – définit le mot de passe qui sera utilisé pour getConnection par défaut la source de données () de la méthode. (Voir également à l’utilisateur.)

Ne prend pas en charge les remplacements par utilisateur.

preferredTestQuery

Par défaut: null

Définit la requête qui sera exécutée pour tous les tests de connexion, si la valeur par défaut (ou une autre implémentation de QueryConnectionTester, ou mieux encore FullQueryConnectionTester) ConnectionTester est utilisé. Définition d’un preferredTestQuery qui exécutera rapidement dans votre base de données peut accélérer considérablement tests de connexion. (. Si aucun preferredTestQuery est défini, le ConnectionTester défaut exécute une getTables () sur DatabaseMetaData de la connexion en fonction de votre base de données, ce qui peut exécuter plus lentement que d’une requête de base de données “normale”.) NOTE: Le tableau sur lequel votre preferredTestQuery sera exécuter doit exister dans le schéma de base de données avant l’initialisation de votre de votre DataSource. Si votre application définit son propre schéma, essayez automaticTestTable lieu. [Voir «Configuration de test de connexion"]

propertyCycle

Par défaut: 0

Temps maximum en secondes avant que les contraintes de configuration utilisateur sont appliquées. Détermine la fréquence maxConnectionAge, maxIdleTime, maxIdleTimeExcessConnections, unreturnedConnectionTimeout sont appliquées. c3p0 vérifie périodiquement l’âge de connexions pour voir si ils ont expiré. Ce paramètre détermine la période. Zéro veut dire automatique: Une période appropriée sera déterminée par C3P0. [Vous pouvez appeler des méthodes getEffectivePropertyCycle ...() sur un PooledDataSource c3p0 de trouver automatiquement la période choisie.]

testConnectionOnCheckin

Défaut: faux

Si cela est vrai, une opération sera effectuée de façon asynchrone à chaque checkin connexion pour vérifier que la connexion est valide. Utiliser en combinaison avec idleConnectionTestPeriod pour tout à fait fiables, les tests de connexion toujours asynchrone. En outre, la fixation d’un automaticTestTable ou preferredTestQuery habituellement d’accélérer tous les tests de connexion. [Voir «Configuration de test de connexion"]

testConnectionOnCheckout

Défaut: faux

Utilisez uniquement si nécessaire. Coûteux. Si cela est vrai, une opération sera effectuée lors de chaque caisse connexion pour vérifier que la connexion est valide. Meilleur choix: vérifier les connexions périodiquement à l’aide idleConnectionTestPeriod. En outre, la fixation d’un automaticTestTable ou preferredTestQuery habituellement d’accélérer tous les tests de connexion. [Voir «Configuration de test de connexion"]

unreturnedConnectionTimeout

Par défaut: 0

Secondes. S’il est défini, si une application vérifie les mais ne parvient pas à check-in

d’une connexion dans le délai prescrit de temps, la piscine sera sans ménagement destroy () de la connexion. Ceci permet aux applications avec des fuites de connexion occasionnelle pour survivre, au lieu de finir épuiser le pool de connexion. Et c’est une honte. Zéro signifie pas de limite, les demandes devraient close () de leurs propres connexions. Évidemment, si une valeur non nulle est définie, elle doit être à une valeur plus que n’importe quelle connexion devrait raisonnablement être extrait. Sinon, la piscine sera l’occasion tuer Connexions dans l’utilisation active, ce qui est mauvais. Il s’agit essentiellement d’une mauvaise idée, mais c’est une caractéristique fréquemment demandées. Fixez vos applications $%!@% de sorte qu’ils n’ont pas les connexions de fuite! Utilisez ce temporairement en combinaison avec debugUnreturnedConnectionStackTraces de comprendre où les connexions sont en cours de vérification, que ne le font pas dans la piscine!

l’utilisateur

Par défaut: null

Pour les applications utilisant ComboPooledDataSource ou tout c3p0 mises en œuvre par DataSources mis en commun – DriverManagerDataSource ou la source de données retourné par DataSources.unpooledDataSource () – définit le nom d’utilisateur qui sera utilisé pour getConnection par défaut la source de données () de la méthode. (Voir aussi le mot de passe.)

Ne prend pas en charge les remplacements par utilisateur.

usesTraditionalReflectiveProxies

Défaut: faux

c3p0 utilisé à l’origine de réflexion dynamique procurations pour les implémentations de connexions et d’autres interfaces JDBC. En c3p0-0.8.5, non-réfléchissant, l’implémentation du code généré est utilisé à la place. Comme il s’agissait d’un changement majeur, et la base de code ancien a été largement utilisé et testé, ce paramètre a été ajouté pour permettre aux utilisateurs de revenir d’avoir eu des problèmes. La nouvelle, la mise en œuvre non-réflexive est plus rapide, et a maintenant été largement déployé et testé, il est peu probable que ce paramètre sera utile. Les anciennes et les nouvelles bases de codes de réflexion non-réfléchissantes sont maintenues, mais le support de l’ancienne base de code peut (ou non) être abandonnées à l’avenir.
&amp;lt;div id=”_mcePaste” style=”position: absolute; left: -10000px; top: 2226px; width: 1px; height: 1px; overflow: hidden;”&amp;gt;Annexe A: Configuration PropertiesGo de page

c3p0 propriétés de configuration peut être divisé en JavaBeans style propriétés et d’autres propriétés.

JavaBeans style Propriétés Revenir en haut

Les propriétés suivantes peuvent être définies directement dans le code en tant que propriétés JavaBeans, via un système de propriétés ou d’un fichier c3p0.properties (avec c3p0. Préfixé au nom de la propriété), ou dans un fichier c3p0-config.xml. Voir la section sur la configuration ci-dessus. Cliquez sur le nom de propriété pour une description complète.

acquireIncrement

acquireRetryAttempts

acquireRetryDelay

autoCommitOnClose

automaticTestTable

breakAfterAcquireFailure

checkoutTimeout

connectionCustomizerClassName

connectionTesterClassName

debugUnreturnedConnectionStackTraces

factoryClassLocation

forceIgnoreUnresolvedTransactions

idleConnectionTestPeriod

initialPoolSize

maxAdministrativeTaskTime

maxConnectionAge

maxIdleTime

maxIdleTimeExcessConnections

MaxPoolSize

maxStatements

maxStatementsPerConnection

MinPoolSize

numHelperThreads

overrideDefaultUser

overrideDefaultPassword

Mot de passe

preferredTestQuery

propertyCycle

testConnectionOnCheckin

testConnectionOnCheckout

unreturnedConnectionTimeout

l’utilisateur

usesTraditionalReflectiveProxies

acquireIncrement

Par défaut: 3

Détermine le nombre de connexions à un moment c3p0 vais essayer d’acquérir lorsque la piscine est épuisé. [Voir «Configuration de pool de base&amp;amp;amp;quot;]

acquireRetryAttempts

Par défaut: 30

Définit combien de fois c3p0 vais essayer d’acquérir une nouvelle connexion de la base de données avant d’abandonner. Si cette valeur est inférieure ou égale à zéro, c3p0 va continuer à essayer de chercher une connexion indéfiniment. [Voir «Configuration de la récupération des pannes de base de données&amp;amp;amp;quot;]

acquireRetryDelay

Par défaut: 1000

Millisecondes, le temps d’attente entre c3p0 va acquérir tentatives. [Voir «Configuration de la récupération des pannes de base de données&amp;amp;amp;quot;]

autoCommitOnClose

Défaut: faux

La spécification JDBC est impardonnable silence sur ce qui devrait arriver en suspens, les transactions en attente à la fermeture de connexion. la politique par défaut C3P0 est de retour en arrière tout solde non engagé, le travail en cours. (Je pense que c’est absolument, indéniablement la bonne politique, mais il n’y a pas de consensus parmi les fournisseurs de pilotes JDBC.) Cadre autoCommitOnClose de vraies causes non engagés l’attente de travaux à engager, plutôt que restaurée sur près de connexion. [Note:. Depuis la spec est ridiculement peu claire sur cette question, les auteurs d'applications qui souhaitent éviter les bogues et des comportements incompatibles devrait s'assurer que toutes les transactions sont explicitement validée ou restaurée-back avant la clôture est appelée] [Voir «Configuration de la gestion des transactions en suspens&amp;amp;amp;quot; ]

automaticTestTable

Par défaut: null

Si cela est prévu, c3p0 va créer une table vide avec le nom indiqué, et l’utilisation des requêtes sur la table pour tester la connexion. Si automaticTestTable est fourni, c3p0 va générer sa requête propre test, donc tout ensemble preferredTestQuery seront ignorées. Vous ne devriez pas travailler avec la table nommée après c3p0 elle crée, elle doit être strictement c3p0 les utiliser dans les tests de votre connexion. (Si vous définissez votre propre ConnectionTester, il doit implémenter l’interface QueryConnectionTester pour ce paramètre pour être utile.) [Voir «Configuration d'une connexion d'essai&amp;amp;amp;quot;]

breakAfterAcquireFailure

Défaut: faux

Si cela est vrai, une mise en commun DataSource se déclarera cassé et être définitivement fermés si une connexion ne peut être obtenu à partir de la base de données après avoir fait acquireRetryAttempts d’acquérir une. Si elle est fausse, l’impossibilité d’obtenir une connexion entraînera tous les threads en attente pour le pool d’acquérir une connexion à lever une exception, mais la source de données restent valables, et tenter d’obtenir à nouveau suite à un appel à getConnection (). [Voir «Configuration de la récupération des pannes de base de données&amp;amp;amp;quot;]

checkoutTimeout

Par défaut: 0

Le nombre de millisecondes une getConnection client appelant () attend une connexion à être enregistrés ou acquis lorsque la piscine est épuisé. Zéro veut dire attendre indéfiniment. Cadre toute valeur positive fera l’getConnection () pour time-out et de rompre avec une SQLException après le nombre spécifié de millisecondes.

connectionCustomizerClassName

Par défaut: null

La classe entièrement qualifié-nom d’un implememtation de l’interface ConnectionCustomizer, les utilisateurs peuvent mettre en œuvre pour établir des connexions quand ils sont acquis à partir de la base de données, ou lors du check-out, et potentiellement à nettoyer les choses au check-in et la destruction de connexion. Si les propriétés de connexion standard (holdability, en lecture seule, ou TransactionIsolation) sont définies dans la onAcquire ConnectionCustomizer () de méthode, elles seront prioritaires sur les valeurs par défaut de connexion.

connectionTesterClassName

Par défaut: com.mchange.v2.c3p0.impl.DefaultConnectionTester

La classe entièrement qualifié-nom d’un implememtation de l’interface ConnectionTester, ou QueryConnectionTester si vous souhaitez cas d’avoir accès à un utilisateur-preferredTestQuery configuré. Cela peut être utilisé pour personnaliser la manière dont c3p0 Connexions DataSources test, mais avec l’introduction des paramètres de configuration et automaticTestTable preferredTestQuery », créez vos propres&amp;amp;amp;quot; devrait être excessif pour la plupart des utilisateurs. [Voir «Configuration de test de connexion&amp;amp;amp;quot;]

debugUnreturnedConnectionStackTraces

Défaut: faux

Si c’est vrai, et si unreturnedConnectionTimeout est fixé à une valeur positive, alors la piscine de capture trace de la pile (via une exception) de toutes les caisses de connexion, et les traces de la pile sera imprimée lorsque non restitués check-out Connections timeout. Cette mesure vise à déboguer des applications à des fuites de connexion, qui est des applications qui parfois ne parviennent pas à revenir Connexions, conduisant à une croissance de piscine et, finalement, l’épuisement (lorsque les hits piscine MaxPoolSize avec toutes les connexions check-out et a perdu). Ce paramètre ne doit être réglé pendant le débogage, comme la capture de la trace de la pile va ralentir chaque connexion check-out.

Ne prend pas en charge les remplacements par utilisateur.

factoryClassLocation

Par défaut: null

Sources de données qui sera engagée par JNDI et l’utilisation de cette interface API référençable à eux-mêmes magasin peut spécifier une URL à partir de laquelle la classe capable de déréférencement d’un entre eux peuvent être chargés. Si (comme c’est généralement le cas), les bibliothèques c3p0 sera disponible sur place pour le service JNDI, laissez cette option configurée comme nulle.

Ne prend pas en charge les remplacements par utilisateur.

forceIgnoreUnresolvedTransactions

Défaut: faux

Fortement disrecommended. Ce paramètre à true peut conduire à des bugs subtils et bizarre. Ce paramètre est terrible, le laisser seul, sauf si absolument nécessaire. Il est ici pour contourner les bases de données ventilées / drivers JDBC qui ne sont pas correctement en charge les transactions, mais qui permettent les connexions &amp;amp;amp;quot;autoCommit drapeaux pour aller à de fausses indépendamment. Si vous utilisez une base de données qui prend en charge les transactions «en partie» (c’est un oxymore, comme le point de l’ensemble des transactions est d’effectuer des opérations de manière fiable et complète, mais néanmoins de nature bases de données sont là-bas), si vous vous sentez à l’aise en ignorant le fait que les connexions avec autoCommit == false peut être au milieu des transactions et des verrous peuvent et d’autres ressources, vous pouvez désactiver le comportement par défaut c3p0 sage, qui est de se protéger, ainsi que la convivialité et la cohérence de la base de données, soit par roulement en arrière ( par défaut) ou de commettre (voir ci-dessus c3p0.autoCommitOnClose) les transactions non résolues. Cela ne devrait être défini à true lorsque vous êtes sûr que vous utilisez une base de données qui permet drapeau Connections ‘autoCommit pour aller à faux, mais n’offre pas de soutien significatif d’autres des transactions. Sinon, ce paramètre à true est juste une mauvaise idée. [Voir «Configuration des transactions non résolues de manutention&amp;amp;amp;quot;]

idleConnectionTestPeriod

Par défaut: 0

S’il s’agit d’un nombre supérieur à 0, c3p0 permettra de tester tous ralenti, mais les connexions regroupées décochée-out, le nombre de secondes. [Voir «Configuration de test de connexion&amp;amp;amp;quot;]

initialPoolSize

Par défaut: 3

Nombre de connexions d’une piscine vais essayer d’acquérir au démarrage. Doit se situer entre MinPoolSize et MaxPoolSize. [Voir «Configuration de pool de base&amp;amp;amp;quot;]

maxAdministrativeTaskTime

Par défaut: 0

Secondes avant de pool de threads c3p0 va essayer d’interrompre une tâche apparemment pendu. Rarement utile. Beaucoup de c3p0 les fonctions ne sont pas effectuées par des fils de client, mais de manière asynchrone par un pool de threads internes. c3p0 de asynchronisme améliore les performances du client directement, et minimise la longueur du temps que des verrous critiques sont détenues par s’assurer que les opérations lente jdbc sont effectuées dans les discussions non-lock-exploitation. Si, toutefois, certaines de ces tâches se &amp;amp;amp;quot;bloque&amp;amp;amp;quot;, c’est qu’ils ne réussissent ni échouer avec une exception pour une période de temps prolongée, pool de threads c3p0 peuvent s’épuiser et les tâches administratives sauvegardés. Si les tâches sont simplement ralentir, la meilleure façon de résoudre le problème est d’augmenter le nombre de threads, via numHelperThreads. Mais si les tâches parfois bloquer indéfiniment, vous pouvez utiliser ce paramètre pour forcer un appel à la méthode interrupt () le fil tâche si une tâche dépasse un délai fixé.

[C3p0 finira par récupérer des tâches suspendues de toute façon en signalant une "impasse apparente" (vous le verrez comme un avertissement dans les journaux), remplaçant les fils du pool de threads de travail et d'interruption () uant les fils d'origine. Mais laisser la piscine aller dans impasse apparente, puis récupérer signifie que, pour certaines périodes, c3p0 la performance sera compromise. Donc, si vous voyez ces messages, l'augmentation et la mise en numHelperThreads maxAdministrativeTaskTime pourrait aider. maxAdministrativeTaskTime devrait être assez grand pour que toute tentative resonable d'acquérir une connexion à partir de la base de données, de tester une connexion, ou deux de détruire une connexion, on peut s'attendre à réussir ou d'échouer dans le délai. Zero (par défaut) signifie tâches ne sont jamais interrompus, qui est la meilleure politique la plus sûre et la plupart des circonstances. Si les tâches sont simplement lent, allouer davantage de discussions. Si les tâches sont suspendus à jamais, essayer de comprendre pourquoi, et peut-être mise en maxAdministrativeTaskTime peut aider dans l'intervalle.

Ne prend pas en charge les remplacements par utilisateur.

maxConnectionAge

Par défaut: 0

Secondes, de manière efficace un temps pour vivre. Une connexion de plus de maxConnectionAge seront détruits et éliminés de la piscine. Cela diffère de maxIdleTime en ce qu'il renvoie à l'âge absolu. Même une connexion qui n'a pas été beaucoup ralenti seront éliminés de la piscine si elle dépasse maxConnectionAge. Zéro veut dire pas d'âge maximum absolu est appliquée.

maxIdleTime

Par défaut: 0

Secondes, une connexion peut rester groupés mais non utilisés avant d'être jetés. Zéro veut dire que les connexions inactives n'expirent jamais. [Voir «Configuration de pool de base"]

maxIdleTimeExcessConnections

Par défaut: 0

Nombre de secondes que les connexions au-delà de MinPoolSize devraient être autorisés à rester les bras croisés dans la piscine avant d’être abattus. Destiné aux applications qui souhaitent agressive minimiser le nombre de connexions ouvertes, la réduction de la piscine en arrière vers MinPoolSize si, après un pic, le niveau de charge diminue et Connexions acquis ne sont plus nécessaires. Si maxIdleTime est fixé, maxIdleTimeExcessConnections devrait être plus petit si le paramètre est d’avoir un quelconque effet. Zéro veut dire que ne sont pas appliquées, Connexions excès ne sont pas ralenti à.

MaxPoolSize

Par défaut: 15

Le nombre maximum de connexions d’une piscine se maintenir à un moment donné. [Voir «Configuration de pool de base"]

maxStatements

Par défaut: 0

La taille du cache de c3p0 PreparedStatement mondiale. Si les deux maxStatements et maxStatementsPerConnection sont nuls, la mise en cache déclaration ne sera pas activée. Si maxStatements est nul mais maxStatementsPerConnection est une valeur différente de zéro, la mise en cache déclaration sera permis, mais pas de limite globale sera appliquée, que le maximum par connexion. maxStatements contrôle le nombre total de déclarations en cache, pour toutes les connexions. S’il est défini, il devrait être un assez grand nombre, comme chaque connexion commun exige de ses propres, distincts des états troupeau mis en cache. Comme un guide, pensez à combien de PreparedStatements distinctes sont utilisées fréquemment dans votre application, et multipliez ce nombre par MaxPoolSize pour arriver à une valeur appropriée. Bien maxStatements est le paramètre JDBC standard pour la mise en cache déclaration de contrôle, les utilisateurs peuvent trouver c3p0 de maxStatementsPerConnection alternative plus intuitive à utiliser. [Voir «Configuration Déclaration de mise en commun"]

maxStatementsPerConnection

Par défaut: 0

Le nombre de PreparedStatements c3p0 cache pour une connexion unique mis en commun. Si les deux maxStatements et maxStatementsPerConnection sont nuls, la mise en cache déclaration ne sera pas activée. Si maxStatementsPerConnection est nul mais maxStatements est une valeur non nulle, la mise en cache déclaration sera activé, et une limite globale appliquée, mais sinon pas de limite sera fixée sur le nombre de déclarations en cache pour une connexion unique. S’il est défini, maxStatementsPerConnection devrait être fixé à environ le nombre PreparedStatements distincts qui sont utilisés fréquemment dans votre application, plus deux ou trois supplémentaires si rarement des déclarations ne pas forcer les déclarations plus fréquentes mises en cache pour être abattus. Bien maxStatements est le paramètre JDBC standard pour la mise en cache déclaration de contrôle, les utilisateurs peuvent trouver maxStatementsPerConnection plus intuitif à utiliser. [Voir «Configuration Déclaration de mise en commun"]

MinPoolSize

Par défaut: 3

nombre minimum de connexions d’une piscine se maintenir à un moment donné. [Voir «Configuration de pool de base"]

numHelperThreads

Par défaut: 3

C3P0 est très asynchrone. Slow opérations JDBC sont généralement effectuées par des fils d’assistance qui ne détiennent pas de serrures soutenu. La diffusion de ces opérations sur plusieurs threads peuvent améliorer sensiblement la performance en permettant à de multiples opérations à effectuer simultanément.

Ne prend pas en charge les remplacements par utilisateur.

overrideDefaultUser

Par défaut: null

Forces le nom d’utilisateur qui doit par PooledDataSources lorsqu’un utilisateur appelle la méthode getConnection () par défaut de méthode. Ceci est principalement utile lorsque les applications sont la mise en commun des connexions d’une non-c3p0 mis en commun DataSource. Les applications qui utilisent ComboPooledDataSource, ou qui enveloppent tout c3p0 mises en œuvre non mis en commun DataSource pouvez utiliser la propriété d’utilisateur simple.

Ne prend pas en charge les remplacements par utilisateur.

overrideDefaultPassword

Par défaut: null

Forces le mot de passe doit par PooledDataSources lorsqu’un utilisateur appelle la méthode getConnection () par défaut de méthode. Ceci est principalement utile lorsque les applications sont la mise en commun des connexions d’une non-c3p0 mis en commun DataSource. Les applications qui utilisent ComboPooledDataSource, ou qui enveloppent tout c3p0 mises en œuvre non mis en commun DataSource pouvez utiliser la propriété simple mot de passe.

Ne prend pas en charge les remplacements par utilisateur.

Mot de passe

Par défaut: null

Pour les applications utilisant ComboPooledDataSource ou tout c3p0 mises en œuvre par DataSources mis en commun – DriverManagerDataSource ou la source de données retourné par DataSources.unpooledDataSource (…) – définit le mot de passe qui sera utilisé pour getConnection par défaut la source de données () de la méthode. (Voir également à l’utilisateur.)

Ne prend pas en charge les remplacements par utilisateur.

preferredTestQuery

Par défaut: null

Définit la requête qui sera exécutée pour tous les tests de connexion, si la valeur par défaut (ou une autre implémentation de QueryConnectionTester, ou mieux encore FullQueryConnectionTester) ConnectionTester est utilisé. Définition d’un preferredTestQuery qui exécutera rapidement dans votre base de données peut accélérer considérablement tests de connexion. (. Si aucun preferredTestQuery est défini, le ConnectionTester défaut exécute une getTables () sur DatabaseMetaData de la connexion en fonction de votre base de données, ce qui peut exécuter plus lentement que d’une requête de base de données "normale".) NOTE: Le tableau sur lequel votre preferredTestQuery sera exécuter doit exister dans le schéma de base de données avant l’initialisation de votre de votre DataSource. Si votre application définit son propre schéma, essayez automaticTestTable lieu. [Voir «Configuration de test de connexion"]

propertyCycle

Par défaut: 0

Temps maximum en secondes avant que les contraintes de configuration utilisateur sont appliquées. Détermine la fréquence maxConnectionAge, maxIdleTime, maxIdleTimeExcessConnections, unreturnedConnectionTimeout sont appliquées. c3p0 vérifie périodiquement l’âge de connexions pour voir si ils ont expiré. Ce paramètre détermine la période. Zéro veut dire automatique: Une période appropriée sera déterminée par C3P0. [Vous pouvez appeler des méthodes getEffectivePropertyCycle ...() sur un PooledDataSource c3p0 de trouver automatiquement la période choisie.]

testConnectionOnCheckin

Défaut: faux

Si cela est vrai, une opération sera effectuée de façon asynchrone à chaque checkin connexion pour vérifier que la connexion est valide. Utiliser en combinaison avec idleConnectionTestPeriod pour tout à fait fiables, les tests de connexion toujours asynchrone. En outre, la fixation d’un automaticTestTable ou preferredTestQuery habituellement d’accélérer tous les tests de connexion. [Voir «Configuration de test de connexion"]

testConnectionOnCheckout

Défaut: faux

Utilisez uniquement si nécessaire. Coûteux. Si cela est vrai, une opération sera effectuée lors de chaque caisse connexion pour vérifier que la connexion est valide. Meilleur choix: vérifier les connexions périodiquement à l’aide idleConnectionTestPeriod. En outre, la fixation d’un automaticTestTable ou preferredTestQuery habituellement d’accélérer tous les tests de connexion. [Voir «Configuration de test de connexion"]

unreturnedConnectionTimeout

Par défaut: 0

Secondes. S’il est défini, si une application vérifie les mais ne parvient pas à check-in

d’une connexion dans le délai prescrit de temps, la piscine sera sans ménagement destroy () de la connexion. Ceci permet aux applications avec des fuites de connexion occasionnelle pour survivre, au lieu de finir épuiser le pool de connexion. Et c’est une honte. Zéro signifie pas de limite, les demandes devraient close () de leurs propres connexions. Évidemment, si une valeur non nulle est définie, elle doit être à une valeur plus que n’importe quelle connexion devrait raisonnablement être extrait. Sinon, la piscine sera l’occasion tuer Connexions dans l’utilisation active, ce qui est mauvais. Il s’agit essentiellement d’une mauvaise idée, mais c’est une caractéristique fréquemment demandées. Fixez vos applications $%!@% de sorte qu’ils n’ont pas les connexions de fuite! Utilisez ce temporairement en combinaison avec debugUnreturnedConnectionStackTraces de comprendre où les connexions sont en cours de vérification, que ne le font pas dans la piscine!

l’utilisateur

Par défaut: null

Pour les applications utilisant ComboPooledDataSource ou tout c3p0 mises en œuvre par DataSources mis en commun – DriverManagerDataSource ou la source de données retourné par DataSources.unpooledDataSource () – définit le nom d’utilisateur qui sera utilisé pour getConnection par défaut la source de données () de la méthode. (Voir aussi le mot de passe.)

Ne prend pas en charge les remplacements par utilisateur.

usesTraditionalReflectiveProxies

Défaut: faux

c3p0 utilisé à l’origine de réflexion dynamique procurations pour les implémentations de connexions et d’autres interfaces JDBC. En c3p0-0.8.5, non-réfléchissant, l’implémentation du code généré est utilisé à la place. Comme il s’agissait d’un changement majeur, et la base de code ancien a été largement utilisé et testé, ce paramètre a été ajouté pour permettre aux utilisateurs de revenir d’avoir eu des problèmes. La nouvelle, la mise en œuvre non-réflexive est plus rapide, et a maintenant été largement déployé et testé, il est peu probable que ce paramètre sera utile. Les anciennes et les nouvelles bases de codes de réflexion non-réfléchissantes sont maintenues, mais le support de l’ancienne base de code peut (ou non) être abandonnées à l’avenir.

Categories: Divers Tags: ,

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

September 1st, 2011 No comments

Vous venez de mettre à jour votre clé ssh et lorsque vous essayez de vous connecter, vous avez le message suivant:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
5f:2d:c5:dd:cc:45:49:e0:88:03:c7:6c:d1:52:2e:50.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:5
RSA host key for 192.168.0.200 has changed and you have requested strict checking.
Host key verification failed.

Ne vous paniquez pas !

Effacez tout simplement les informations liées à l'ordinateur dans votre table de hotes connus: known_hosts, en utilisant la commande
suivante:
ssh-keygen -R IP_DU_SERVEUR

Et voilà, le tour est joué!
Categories: Debian, shell, Ubuntu Tags: , ,

Test Log Rotate en mode debug

July 7th, 2011 No comments

Il peut arriver que vous ayez envie de tester la configuration de votre Logrotate:

La commande à tapez est celle-ci :

/usr/sbin/logrotate -d /etc/logrotate.d/fichier_logrotate

Vous aurez donc un exemple d’exécution avec la sortie erreurs, qui vous aidera à corriger votre script.

Vous pouvez également utiliser la commande suivant pour faire parler votre fichier de configuration de log:

/usr/sbin/logrotate -vf /etc/logrotate.conf
Categories: Linux topics, Log, shell Tags: , ,