6

I've been learning about connection pools, and I have gotten one working by using Tomcat's PoolProperties. Now I would like to set one up using a context.xml file with Tomcat and IntelliJ, but I can't get this to work. How is this done?

A new project with a 4.0 Web Application framework can automatically create a web/WEB-INF directory with a web.xml file, but the web/META-INF directory containing a context.xml file is not created. If I do create web/META-INF/context.xml myself through the Tool Window > Project, and I use this to set up a connection pool as shown below, the file seems to be ignored.

This is my guess as to what might be happening, though I'm sure this is filled with errors: A WAR file is a packaged directory that is sent to Tomcat in an arrangement that Tomcat understands. web/WEB-INF/web.xml is a required file that is needed for a variety of reasons, one of which is to set up servlets. web/META-INF/context.xml is optional, and thus by default, IntelliJ does not create it. When a web/META-INF/context.xml is created manually, it must also be included into the WAR file otherwise IntelliJ will not send it to Tomcat.

Even if the previous paragraph is true though, I still have not gotten Tomcat to use context.xml after trying to add it to the WAR. Maybe I didn't add it correctly.

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> 
3
  • I have exactly the same issue... Commented May 21, 2019 at 9:32
  • @Jack J: Have you managed to solve this yet? Commented Aug 13, 2020 at 5:17
  • I would recommend looking at the WAR file created by IntelliJ. Mrty guess is that you assume that the META-INF is being added to the WAR correctly, but your assumption is wrong. Look at the Project->Artifacts tab and see what is being added to the WAR. Commented Oct 28, 2020 at 11:00

1 Answer 1

1

I had the same issue and adding context lookup to my java code to use the resource defined in context.xml did the job.

It's the accepted solution from: Tomcat and JDBC connection pooling

Still works with Tomcat 9.0.39

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.