如何解决 Java EE 不良实践:直接管理连接

use*_*009 1 java security jdbc veracode

我向 Veracode 安全测试工具提交了 Java 应用程序 EAR,并在以下代码中发现了 API 滥用 - 连接直接管理缺陷:

Connection con = DriverManager.getConnection (url, hsUserId, hsPassword);  
Run Code Online (Sandbox Code Playgroud)

有人请帮我解决这个问题。

Ale*_*ühl 5

您的错误消息非常清楚地说明了这一点:

连接缺陷的直接管理

因此,在容器内,您永远不应该手动创建连接,而应该让容器来完成它。

您所说的是“J2EE”,还是您的意思是“Java EE”?(您应该添加相关标签!)

在第一种情况下,您必须执行 JNDI 查找:

InitialContext ctx = new InitialContext();
DataSource datasource = (DataSource) ctx.lookup("..");
Connection conn = datasource.getConnection();
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,您对其进行注释并让它注入:

@PersistenceContext
EntityManager em;
Run Code Online (Sandbox Code Playgroud)