我正在使用IBM Websphere 8.5.5.8。我已配置数据源jdbc/Myds
我在本地编写了一个java程序,用于连接服务器并从表中获取记录。
Context initContext = new InitialContext();
ds = (DataSource)initContext.lookup("jdbc/Myds");
con=ds.getConnection();
但是这段代码返回一个oracle错误Invalid username / password
然后我将代码更改为:
Context initContext = new InitialContext();
ds = (DataSource)initContext.lookup("jdbc/Myds");
con=ds.getConnection("usename","password");
这正确连接到数据库。 因此,我很难将应用程序部署在具有不同用户名和密码的不同服务器中。
我该如何解决这个问题? 这是服务器中的配置问题还是编码中的问题?。
答案 0 :(得分:3)
最好的方法是在服务器上配置它。您可以使用WAS管理控制台使用身份验证参数设置数据源。 通过这种方式,您可以为每个服务器配置用户/密码。 请参阅documentation。
然后,您的JAVA代码应为:
Context initContext = new InitialContext();
ds = (DataSource)initContext.lookup("jdbc/Myds");
con=ds.getConnection();
答案 1 :(得分:2)
如果需要通过JNDI名称从外部应用程序访问它,建议的方法是在DataSource配置中定义Component Authentication Alias
。如果要创建位于服务器上的Web / EJB应用程序,则应使用资源引用和Container Authentication Alias
。这些别名允许您将需要用于连接到应用程序的各种资源(例如Datasource,JMS)的用户特定数据分开。
此类配置机制在所有应用程序服务器中以各种形式存在,并且不需要应用程序代码中的任何特定内容。
答案 2 :(得分:1)
直截了当地回答你的问题,恕我直言,这是一个架构决定,因此不是本身的问题。
您可以遵循的解决方案是创建配置文件,放置username
和password
,并在建立与数据库的连接之前读取应用程序。
我很难将应用程序部署在具有不同用户名和密码的不同服务器中
从头脑中你可以通过两种方式实现这一目标:
使用Java Build Tool,使用类似profile的内容,将应用程序与服务器的配置文件打包在一起。问题是,如果服务器之间的username/password
对确实不同,则必须为每个服务器生成构建。
在没有打包配置文件的情况下构建应用程序,并将后者直接放在服务器上。使用这种方法,您必须保证可以在应用程序的类路径中访问配置文件以便读取它。