gpt4 book ai didi

java - 为什么 JNDI InitialContext 在 jsp 中可以正常工作,但在类中却不行?

转载 作者:行者123 更新时间:2023-11-28 23:12:04 25 4
gpt4 key购买 nike

我正在使用 JNDI 进行数据库连接。我确定部署没问题。因为当我在下面的 JSP 中测试它时,它工作正常。

</head> 
<body>
<%
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/airlineticket");
Connection conn = ds.getConnection();
out.println(conn);
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>

success connection picture

但是当我使用 ConnectionFactory 类时,出现错误:ConnectionFactory cannot be resolved. 我只是将连接代码放在 ConnectionFactory 类中,为什么会这样?连接工厂类:

package com.db;

import javax.naming.*;
import java.sql.*;
import org.apache.tomcat.jdbc.pool.DataSource;

public class ConnectionFactory {
private ConnectionFactory() {};
public static Connection getConnection()
{
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/airlineticket");
return ds.getConnection();
}
catch (NamingException e)
{
System.out.print("connection failed");
return null;
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
}
}

测试 JSP:

  <%@ page language="java" import="java.util.*,com.db.ConnectionFactory" pageEncoding="UTF-8"%> 
</head>
<body>
<%
try {
Connection conn = ConnectionFactory.getConnection();
out.println(conn);
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>

web.xml(/WEB-INF/web.xml):

<resource-ref>
<res-ref-name>jdbc/airlineticket</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

context.xml(/META-INF/context.xml):

<Context>
<Resource name="jdbc/airlineticket"
auth="Container"
type="javax.sql.DataSource"
username="Manager"
password="123456"
driverClassName="org.mariadb.jdbc.Driver"
url="jdbc:mariadb://localhost:3306/airlineticket"
maxActive="50"
masIdle="20"> </Resource>
</Context>

最佳答案

  • 您能否顺利构建应用程序?
  • 确保您已正确部署类文件。

JSP 将自动重新编译...而 java 文件,我们每次都必须构建和部署,除非您使用的是 JRebel...

如果您已经这样做了,我希望看到您的完整日志...

关于java - 为什么 JNDI InitialContext 在 jsp 中可以正常工作,但在类中却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com