我知道这看起来像是一个重复的问题,但已经尝试了 stackoverflow 和其他论坛中的所有帖子,但无济于事。
Apache Tomcat 8.0.32运行 MySQL 5.6 的亚马逊 RDS在 EC2 windows 服务器上运行 tomcat
我的 web.xml
...
datasource
jdbc/bbDataSource
javax.sql.DataSource
Container
Shareable
...
Context.xml 位于我的应用程序的 META-INF 文件夹中:
auth="Container"
type="javax.sql.DataSource"
username="********"
password="********"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://*url*:3306/x?zeroDateTimeBehavior=convertToNull"/>
在 ServletContextListener 中创建数据源
thử {
dataSource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/bbDataSource");
mLogger.log(Level.CONFIG, "Startup - AppContextServletListener - contextInitialized - Created dataSource object: {0}", dataSource);
sce.getServletContext().setAttribute("dataSource", dataSource);
}
启动期间没有问题。访问数据源时,tomcat 抛出上述错误。jar 文件位于 tomcat 的 lib 文件夹中(我怀疑这是问题所在,因为我也在同一个应用程序中使用 hibernate,并且它能够毫无问题地访问数据库)。
我还注意到以下内容:$CATALINA_HOME/conf/Catalina/localhost 没有“ch.xml”-> 尝试复制 context.xml 并重命名为“ch.xml”,但无济于事。
server.xml -> 宿主节点下
unpackWARs="true" autoDeploy="true">
这修复了它:
在 Server.xml 中添加了 Resource line under context奇怪为什么需要定义两次?有什么线索吗?
auth="Container"
type="javax.sql.DataSource"
username="********"
password="********"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://x:3306/x?zeroDateTimeBehavior=convertToNull"/>
Tôi là một lập trình viên xuất sắc, rất giỏi!