通过Websphere上的JCA进行查找连接时获取getConnection中的错误

时间:2015-11-10 23:03:03

标签: java jdbc lookup jca

我正在编写一个独立的Java程序,它使JDBCWebsphere server连接。 Websphere应用服务器已经配置了数据源(我们使用JCA)并且运行正常。 现在,当我运行我的独立代码(来自RAD / Eclipse)以获得连接时,它会在行dataSource.getConnection();上给出错误

  

错误:   java.sql.SQLException:调用DSRA0010E中的无效参数:SQL State = null,错误代码= 17,433

我搜索了这个错误,很多人建议在dataSource.getConnection(user, pwd)之类的连接中传递user / pwd。我确实尝试过,它工作正常。我能够获得jdbc连接,我的应用程序运行正常。

问题:我无法在我的应用程序中传递硬编码的用户名和密码。因为usr / pwd将来可以更改,或者是安全漏洞。

有人请建议我。为什么它不能通过jca拉连接以及为什么需要密码?

`属性localProperties = new Properties(); localProperties.put(Context.INITIAL_CONTEXT_FACTORY," com.ibm.websphere.naming.WsnInitialContextFactory"); localProperties.put(Context.PROVIDER_URL," iiop://xxx.xx.xx.net:28035");

InitialContext localInitialContext = new InitialContext(localProperties); DataSource localDataSource =(DataSource)localInitialContext.lookup(datasource);

// localConnection = localDataSource.getConnection(" user"," mypwd"); // 工作良好 localConnection = localDataSource.getConnection(); //不要工作`

5 个答案:

答案 0 :(得分:0)

我确信Data Douce配置中存在一个小错误。

您的测试连接在Websphere数据源中是否正常工作?

您的J2C条目是否正确?

另外要注意,您应该在Websphere上下文中运行以从Websphere获取数据源。

答案 1 :(得分:0)

通常,您应该在Websphere上下文中,以获取InitialContext来查找数据源的JNDI。

不确定 - 如果你的独立程序可以做到这一点。

可以共享代码段吗?

答案 2 :(得分:0)

还有一个与此相关的线程。

参考这个问题:

Access the DataSource from the stand alone application

但根据我的理解 - 数据源只是本地的,你不能进行远程查找(如远程EJB查找)。

似乎这是有效的 - 通过getConnection(用户名,密码)访问。

答案 3 :(得分:0)

我做了这个检查我的自己 - 不是在日食或RAD中。

但是在一个公共服务器环境中 - 我的类路径上有所有可用的jar。

我无法查找我的JNDI,因为它说你不是一个有效的客户端访问。

但是我可以用远程东西来构建我的EJB。

如果您仍想使用Websphere数据源配置 - 我希望您查看JSR-352实现 - Java批处理。或者是带有计时器执行或Executor服务的EJB。

E.g。 https://developer.ibm.com/wasdev/docs/creating-simple-java-batch-application-using-websphere-developer-tools/

答案 4 :(得分:0)

(添加我之前的评论作为答案)您应该能够使用EE客户端执行此操作。这是更重量级和涉及的,但作为回报,您可以使用授权配置获得更大的灵活性。也许从以下开始: https://www-01.ibm.com/support/knowledgecenter/SSAW57_7.0.0/com.ibm.websphere.nd.doc/info/ae/ae/tatk_condacli.html