2009-11-02 5 views
0

Je tente de télécharger un fichier dans le serveur et de stocker les informations du fichier dans une base de données Access, est-il nécessaire de gérer les threads tout en connectivité de base de données pour plusieurs utilisateurs. Si oui, comment le faire?Multithreading dans la connectivité JDBC

Répondre

1

Exactement. Chaque requête HTTP est déjà un thread à part entière. Gardez à l'esprit que le conteneur Web créera une seule instance de servlet pendant la durée de vie de l'application et que le code de servlet est partagé entre toutes les demandes. Cela implique que toutes les variables de niveau classe ou les variables statiques vont être partagées entre toutes les demandes. Si vous avez une telle variable, c'est pas threadsafe. Vous devez déclarer les variables spécifiques à la requête threadlocal au niveau de la méthode. En ce qui concerne JDBC: il suffit d'écrire du code solide et tout devrait bien se passer. Utiliser un pool de connexions n'est utile que pour améliorer les performances de connexion (ce qui vaut vraiment la peine, croyez-moi, connecter la DB est une tâche assez coûteuse qui peut compter jusqu'à 200ms ou plus, tout en réutilisant une connexion à partir du pool presque rien). Cela ne change rien à la sécurité du code que vous écrivez, il est toujours sous votre contrôle/mains. Pour obtenir une image claire de la façon de faire le codage JDBC de base de la bonne façon, vous pouvez trouver this article utile.

2

Votre serveur Web est multithread par héritage, ce qui vous évite d'implémenter vos propres threads pour gérer les téléchargements. Assurez-vous toutefois que plusieurs demandes n'utilisent pas les mêmes ressources (ne pas écrire tous les fichiers téléchargés dans le même fichier tmp, ....)

Pour éviter des problèmes d'enregistrement des données sur votre base de données, utilisez un pool de connexions.

Alors oui vous avez besoin, mais les discussions si votre conception est bonne alors tout le filetage sera assurée par vos cadres