如何从Java连接到Websphere数据源?

时间:2016-02-26 06:42:45

标签: java java-ee websphere websphere-8

我正在使用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");

这正确连接到数据库。 因此,我很难将应用程序部署在具有不同用户名和密码的不同服务器中。

我该如何解决这个问题? 这是服务器中的配置问题还是编码中的问题?。

3 个答案:

答案 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)

直截了当地回答你的问题,恕我直言,这是一个架构决定,因此不是本身的问题

您可以遵循的解决方案是创建配置文件,放置usernamepassword,并在建立与数据库的连接之前读取应用程序。

  

我很难将应用程序部署在具有不同用户名和密码的不同服务器中

从头脑中你可以通过两种方式实现这一目标:

  1. 使用Java Build Tool,使用类似profile的内容,将应用程序与服务器的配置文件打包在一起。问题是,如果服务器之间的username/password对确实不同,则必须为每个服务器生成构建。

  2. 在没有打包配置文件的情况下构建应用程序,并将后者直接放在服务器上。使用这种方法,您必须保证可以在应用程序的类路径中访问配置文件以便读取它。