Je suis dans une situation étrange après la mise à niveau de Tomcat 7 vers la version 7.0.26 (mise à jour Centos 7 yum) il y a quelques jours. DriverManager
ne parvient pas à reconnaître automatiquement le pilote MySQL et renvoie une valeur nulle Connection
lorsque le servlet est déployé sur le serveur Tomcat. D'un autre côté, le serveur GlassFish sur mon NetBeans fonctionne parfaitement.DriverManager continue de renvoyer la connexion null uniquement sur Tomcat (fonctionne très bien sur Glassfish)
Le code de servlet test simple est comme ci-dessous:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter())
{
Connection c = MySQLConnector.connect("DBFoobar", "username", "passwd");
String message = null;
if (c == null)
message = "Connection returned null";
else
message = "C is returned: " + c.toString();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<body>");
out.println(message);
.
.
.
et MySQLConnector
, l'appel jdbc
est défini comme ci-dessous:
public class MySQLConnector
{
private static final String dbURLPrefix
= "jdbc:mysql://dbfoobar.xxx.uswest2.rds.amazonaws.com:3306/";
public static Connection connect(String dbName, String username, String password)
{
Connection connection = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(dbURLPrefix + dbName
+ "?useUnicode=yes&characterEncoding=UTF-8&useSSL=false", username, password);
.
.
.
Lorsque le servlet est exécuté sur le serveur GlasshFish, correctement affiche l'objet Connection
, mais affiche le message Connection returned null
sur le serveur Tomcat.
Des idées à ce sujet? Jusqu'ici, j'ai essayé de placer le dossier de jar de connecteur de mysql sous le répertoire /usr/share/tomcat/lib
mais en vain. Le package war
contient correctement le fichier jar du connecteur mysql. La version précédente de Tomcat 7 a bien fonctionné.
Il n'a pas renvoyé la valeur null. Il a jeté une exception. Votre code a renvoyé null, mais c'est sa faute. L'exception vous indique le problème. – EJP
Non, il a retourné null. Avec SELinux désactivé, il fonctionne correctement sans aucune exception. – jwsohn