如何让 context.xml 使用 Tomcat 和 IntelliJ IDEA
How to get a context.xml working with Tomcat and IntelliJ IDEA
我一直在学习有关连接池的知识,using Tomcat's PoolProperties 我已经开始使用它了。现在我想使用带有 Tomcat 和 IntelliJ 的 context.xml 文件来设置一个,但我无法让它工作。这是怎么做到的?
使用4.0 Web 应用程序框架的新项目可以自动创建一个web/WEB-INF 目录和一个web.xml 文件,但是web/META-INF 目录包含一个context.xml 文件是未创建。如果我通过工具 Window > 项目自己创建 web/META-INF/context.xml,并且我使用它来设置连接池,如下所示,该文件似乎被忽略了。
这是我对可能发生的事情的猜测,虽然我确信这充满了错误:WAR 文件是一个打包的目录,它被安排发送到 Tomcat Tomcat 理解。 web/WEB-INF/web.xml 是出于多种原因需要的必需文件,其中之一是设置 servlet。 web/META-INF/context.xml 是可选的,因此默认情况下,IntelliJ 不会创建它。手动创建 web/META-INF/context.xml 时,还必须将其包含到 WAR 文件中,否则 IntelliJ 不会将其发送到 Tomcat.
即使前面的段落是正确的,在尝试将它添加到 WAR 之后,我仍然没有 Tomcat 使用 context.xml。可能是我没加对吧
context.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Context>
<Resource name="jdbc/sql_connection_03" auth="Container"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/follow_db_01"
username="root" password="pass"
maxactive="100" maxIdle="30" maxWait="10000"
logAbandoned="true" removeAbandoned="true"
removeAbandonedTimeout="60" type="java.sql.DataSource"/>
</Context>
index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<sql:query var="rs" dataSource="jdbc/sql_connection_03">
select ID, Description, PackageSize from products;
</sql:query>
<html>
<head>
<title>Index</title>
</head>
<body>
<c:forEach var="row" items="${rs.rows}">
${row.ID}<br>
${row.Description}<br>
${row.PackageSize}<br>
</c:forEach>
</body>
</html>
我遇到了同样的问题,将上下文查找添加到我的 java 代码以使用 context.xml 中定义的资源完成了工作。
这是第一个被接受的解决方案:Tomcat and JDBC connection pooling
仍然适用于 Tomcat 9.0.39
我一直在学习有关连接池的知识,using Tomcat's PoolProperties 我已经开始使用它了。现在我想使用带有 Tomcat 和 IntelliJ 的 context.xml 文件来设置一个,但我无法让它工作。这是怎么做到的?
使用4.0 Web 应用程序框架的新项目可以自动创建一个web/WEB-INF 目录和一个web.xml 文件,但是web/META-INF 目录包含一个context.xml 文件是未创建。如果我通过工具 Window > 项目自己创建 web/META-INF/context.xml,并且我使用它来设置连接池,如下所示,该文件似乎被忽略了。
这是我对可能发生的事情的猜测,虽然我确信这充满了错误:WAR 文件是一个打包的目录,它被安排发送到 Tomcat Tomcat 理解。 web/WEB-INF/web.xml 是出于多种原因需要的必需文件,其中之一是设置 servlet。 web/META-INF/context.xml 是可选的,因此默认情况下,IntelliJ 不会创建它。手动创建 web/META-INF/context.xml 时,还必须将其包含到 WAR 文件中,否则 IntelliJ 不会将其发送到 Tomcat.
即使前面的段落是正确的,在尝试将它添加到 WAR 之后,我仍然没有 Tomcat 使用 context.xml。可能是我没加对吧
context.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Context>
<Resource name="jdbc/sql_connection_03" auth="Container"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/follow_db_01"
username="root" password="pass"
maxactive="100" maxIdle="30" maxWait="10000"
logAbandoned="true" removeAbandoned="true"
removeAbandonedTimeout="60" type="java.sql.DataSource"/>
</Context>
index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<sql:query var="rs" dataSource="jdbc/sql_connection_03">
select ID, Description, PackageSize from products;
</sql:query>
<html>
<head>
<title>Index</title>
</head>
<body>
<c:forEach var="row" items="${rs.rows}">
${row.ID}<br>
${row.Description}<br>
${row.PackageSize}<br>
</c:forEach>
</body>
</html>
我遇到了同样的问题,将上下文查找添加到我的 java 代码以使用 context.xml 中定义的资源完成了工作。
这是第一个被接受的解决方案:Tomcat and JDBC connection pooling
仍然适用于 Tomcat 9.0.39