【问题标题】:How do I connect to a Websphere Datasource from Java?如何从 Java 连接到 Websphere 数据源?
【发布时间】:2016-06-09 06:47:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jakarta-ee websphere websphere-8


    【解决方案1】:

    最好的方法是在服务器上配置它。您可以使用 WAS Admin Console 来设置带有身份验证参数的数据源。 这样,您就为每个服务器配置了用户/密码。 请参阅documentation

    那么,你的 JAVA 代码应该是:

    Context initContext = new InitialContext(); 
    ds = (DataSource)initContext.lookup("jdbc/Myds");
    con=ds.getConnection();
    

    【讨论】:

    • 如果 OP 想在未来改变它的应用服务器?
    • 所有应用服务器都允许用户配置数据源并设置其身份验证参数。如果更改服务器,则必须配置新的数据源..
    【解决方案2】:

    如果您需要通过 JNDI 名称从外部应用程序访问它,推荐的方法是在 DataSource 配置中定义 Component Authentication Alias。如果您将创建位于服务器上的 Web/EJB 应用程序,那么您应该使用资源引用和Container Authentication Alias。这些别名允许您从应用程序中分离出需要用于连接各种资源(例如数据源、JMS)的用户特定数据。

    这样的配置机制以各种形式存在于所有应用服务器中,不需要应用程序代码中的任何特定内容。

    【讨论】:

      【解决方案3】:

      直接回答您的问题,恕我直言,这是一个架构决策,因此本身不是问题。

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

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

      在我看来,您可以通过两种方式实现这一目标:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        相关资源
        最近更新 更多