从WAS 6.1中的Sybase数据源获取连接失败,并显示消息“DriverManager.getConnection中缺少用户名属性”

时间:2010-04-13 15:09:47

标签: jdbc websphere sybase datasource websphere-6.1

我有一个需要通过数据源连接到Sybase数据库的独立应用程序,我正在尝试使用getConnection()进行连接,并从WAS 6.1中托管的 Sybase数据源获取连接,遗憾的是我收到错误JZ004 - > Sybase(R) jConnect for JDBC(TM) Programmer's Reference: SQL Exception and Warning Messages

JZ004错误信息是:
DriverManager.getConnection(...,Properties)中缺少用户名属性 操作:提供所需的用户属性。

如您所见,这不是连接(因此我们可以丢弃JNDI或查找问题),而是配置问题。对于WAS 6.1中的Sybase数据源,我已经设置了正确的身份验证别名(组件管理的身份验证别名),我知道凭据没问题,“测试连接”对于此数据源是成功的。有人有一个类似的问题,是因为认证别名 - > http://forum.springsource.org/showthread.php?t=39915

接下来,我尝试调用getConnection()但是现在我提供了像getConnection(用户,密码)这样的凭据......这次它工作了!!! 所以我怀疑某种方式是WAS 6.1没有选择或采取我在数据源中设置的身份验证信息,如前所述。

如果您认为getConnection(用户,密码)可能适合我的情况,那么情况并非如此,因为我需要在服务器中保留凭据,独立应用程序只需要知道用于查找数据源的JNDI信息。

如果遇到类似问题,或者您建议我做什么,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:0)

要使用已配置的资源,您需要查找它而不是直接使用DriverManager:

new InitialContext().lookup("myDS");

答案 1 :(得分:0)

在另一个主题中 - > Call to DataSource.getConnection not returning the expected connection,我得到的答案也解决了这个问题,基本上答案是根据J2C documentation,身份验证别名不适用于外部客户端。解决方法是将用户和密码作为自定义属性提供,而不是作为身份验证别名提供。