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.
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
Nein, es gab null zurück. Wenn SELinux deaktiviert ist, funktioniert es einwandfrei, ohne dass Ausnahmen ausgelöst werden. – jwsohn