我正在使用Tomcat版本8和MySQL连接器版本6.这是我的context.xml:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource auth="Container"
driverClassName="com.mysql.cj.jdbc.Driver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="jdbc/MyConn"
username="root"
password="mypassword"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/training_db"
/>
这是我用于数据库连接的类。
public class DBConnection {
public static Connection getConnection() throws Exception{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MyConn");
Connection conn = ds.getConnection();
System.out.println("dbConLookp():: Data Source Connection is called."+ds.getLogWriter());
return conn;
}
}
这是我连接数据库和插入的方法。
try{
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
Connection con = DBConnection.getConnection();
PreparedStatement st = con.prepareStatement("INSERT INTO EMPLOYEE (ID,FIRSTNAME,LASTNAME,MIDDLENAME,PHONENUMBER,EMAILID,ADDRESS,USERPASS) VALUES (?,?,?,?,?,?,?)");
st.setInt(1, Integer.parseInt(request.getParameter("id")));
st.setString(2, firstName);
st.setString(3, lastName);
st.setString(4, middleName);
st.setString(5, phoneNumber);
st.setString(6, emailId);
st.setString(7, address);
st.setString(8, password);
boolean rs = st.execute();
if (!rs) {
System.out.println("Record "+request.getParameter("id")+" is inserted successfully.");
} else {
System.out.println("Record is insertion is failed.");
}
st.close();
con.close();
}
catch(Exception e){
System.out.println("Exception caught:" + e);
}
在Register页面上,当我单击register时,我得到java.sql.SQLException:无法创建PoolableConnectionFactory(需要CLIENT_PLUGIN_AUTH)异常。我尝试将localhost更改为127.0.0.1但它没有工作。我还检查了MySQL权限,看起来很好。我尝试创建一个不同的用户,但它也没有用。我尝试在WEB-INF文件夹中创建另一个context.xml,但没有运气。我不知道我还能做些什么。任何帮助表示赞赏。
答案 0 :(得分:0)
如果有人遇到同样的问题,我记得我将MySQL Connector JAR复制到Tomcat的lib文件夹中,正如相关问题的StackOverflow回答所示。删除那些JAR,你会很高兴。
我还需要将连接器版本降级到v5.1.39。如果您仍遇到问题,请尝试使用不同的连接器版本。