我正在编写一个独立的Java程序,它使JDBC
与Websphere 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(); //不要工作`
答案 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。
答案 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