2017-09-19 4 views
-1

Ich habe eine seltsame Situation, nachdem ich vor ein paar Tagen Tomcat 7 auf 7.0.26 aktualisiert habe (Centos 7 yum update). DriverManager erkennt den MySQL-Treiber nicht automatisch und gibt eine Null db Connection zurück, wenn das Servlet auf dem Tomcat-Server bereitgestellt wird. Auf der anderen Seite funktioniert der GlassFish Server auf meinen NetBeans völlig einwandfrei.DriverManager gibt Nullverbindung immer nur auf Tomcat zurück (funktioniert gut bei Glassfish)

Der einfache Test-Servlet-Code ist unten wie:

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); 
     . 
     . 
     . 

und in MySQLConnector, der jdbc Aufruf wie unten definiert:

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); 
      . 
      . 
      . 

Wenn das Servlet auf GlasshFish Server ausgeführt wird, ist es richtig zeigt Connection Objekt, aber zeigt Connection returned null Nachricht auf Tomcat-Server an.

Irgendwelche Ideen dazu? Bisher habe ich versucht, Mysql Connector JAR-Datei unter /usr/share/tomcat/lib Verzeichnis aber vergeblich. Das war-Paket enthält die mysql-Connector-JAR-Datei. Die vorherige Version von Tomcat 7 hat gut funktioniert.

+0

Es gab nicht Null zurück. Es gab eine Ausnahme. Ihr Code hat null zurückgegeben, aber das ist seine Schuld. Die Ausnahme sagt Ihnen, was das Problem war. – EJP

+0

Nein, es gab null zurück. Wenn SELinux deaktiviert ist, funktioniert es einwandfrei, ohne dass Ausnahmen ausgelöst werden. – jwsohn

Antwort

-1

Okay. Ich gebe auf. :) Die einzigen Dinge, die ich herausfinden konnte, sind wie folgt. Ich bin mit CentOS 7.

  • Upgrade von Tomcat 7.0.69-7.0.76 scheint von DriverManager
  • Vom /var/log/yum.log, OpenJDK (1.8.0) die Connection Generation gebrochen zu haben, hat auch
  • nach dem Zurücksetzen der aufgerüstet gesamte virtuelle EC2-Instanz zu einer vorherigen Sicherung (mit Tomcat 7.0.69), der Code läuft ohne Probleme
  • yum update wieder führt zu dem Fehler über

Hoffe das hilft.

0

Endlich die Antwort gefunden. Es war wegen SELinux. Ich habe die Details nicht überprüft, aber SELinux scheint zu verhindern, dass ausgeführt wird. Ich änderte die Konfigurationsdatei /etc/selinux/config und deaktiviert SELinux:

SELINUX=permissive # changed from enforcing 
Verwandte Themen