如何在没有用户名和密码的情况下从 Java DataSource 获取连接?

How to get a connection from Java DataSource without a username and password?

在我使用其全局 JNDI 名称查找受保护的 javax.sql.DataSource 之后,在 ejb 中,例如jdbc/MyDS(不是资源引用)有没有办法通过 getConnection() 获取连接。

这是在 WAS 8.5.5 上,数据源同时具有容器管理和组件管理的身份验证别名,“映射配置别名”为 none,测试连接在 WAS 管理控制台中成功。

直接查找(当不使用资源引用时)默认为应用程序管理的身份验证(有时也称为组件管理的身份验证),这意味着应用程序负责提供或不提供 user/password.您应该能够使用两种 getConnection 方法:如果您不想提供 user/password,则不使用 user/password 的 getConnection(),如果您希望提供 user/password,则使用 getConnection(user, password) ].

获得应用程序管理的身份验证的另一种方法是使用资源引用并使用 res-auth=Application 配置它。如果未指定资源引用,则默认为 Container.

如果您在使用应用程序管理的身份验证时未在 getConnection 请求中提供 user/password,并且您的数据源需要 user/password(您已在此处指出是这种情况),那么您将需要将组件管理的身份验证别名或 user/password 配置为自定义数据源属性(大多数 JDBC 供应商倾向于支持 user/password 作为数据源属性)