当前位置: 首页 > 知识库问答 >
问题:

从独立的 Java 应用程序访问 Websphere 数据源,无需指定用户名/密码

丁经国
2023-03-14

我正在编写一个独立的应用程序,它将从Webphere Application Server获取数据源,获取数据库连接并执行一些业务逻辑。

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class TestDS {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Hashtable<String, String> pdEnv = new Hashtable<String, String>();
        pdEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");             
        pdEnv.put(Context.PROVIDER_URL, "iiop://localhost:2809");
        System.out.println("Getting connection");
        Context initialContext;
        try {
            System.setProperty("com.ibm.CORBA.Debug","true");
            System.setProperty("com.ibm.CORBA.CommTrace","true");
            System.setProperty("com.ibm.CORBA.Debug.Output","/usr/app/corba.log");
            initialContext = new InitialContext(pdEnv);
            System.out.println("Getting initial context");
            DataSource datasource = (DataSource)initialContext.lookup("jdbc/sampleDB");
            System.out.println("Getting datasource");
            Connection connection = null;
            System.out.println("Datasoure is "+ datasource);
            if (datasource != null) {
              //connection = datasource.getConnection("username","password"); // DB credintials
                connection = datasource.getConnection();
            } else {
              System.out.println("Failed to lookup datasource.");
            }
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

这会产生以下错误

java.sql.SQLNonTransientException:[jcc][t4][10205][11234][4.21.29]不支持空用户ID。ERRORCODE=-4461, SQLSTATE=42815 DSRA0010E:SQLState=42815, Error Code=-4,461

但是如果提供userid/password,就可以了

 connection = datasource.getConnection("username","password");

在获取数据库连接时,如何在不指定userid/密码的情况下使其工作

共有1个答案

丌官飞章
2023-03-14

大多数 JDBC 驱动程序供应商都允许在其数据源上设置用户和密码,然后将其用作在没有用户/密码的情况下请求的所有连接的默认值。如果在 WebSphere 应用程序服务器中转到数据源的配置,然后转到“定制属性”,那么应该能够添加“用户”和“密码”的属性,如果 JDBC 供应商支持,则这些属性应应用于数据源。

 类似资料:
  • 有人能告诉我从外部独立的JavaClient访问Websphere Liberty profile 8.5中定义的数据源的过程吗? 谢谢

  • 我需要一些使用远程ejb调用的帮助。有以下设置: 背景: 一个JavaEE web应用程序(命名为app1)托管在一个古老的WAS8应用程序服务器上。应用程序为应用程序之间的通信提供至少一个(已知)远程ejb。 基础设施信息: WAS8使用java Version1.6.0运行在我公司的Intranet上的linux服务器上。WAS8是8.0.0.15nd版本。 websphere liberty

  • 现在假设我们想要使用 Spark API 写一个独立的应用程序。我们将通过使用 Scala(用 SBT),Java(用 Maven) 和 Python 写一个简单的应用程序来学习。 我们用 Scala 创建一个非常简单的 Spark 应用程序。如此简单,事实上它的名字叫 SimpleApp.scala: /* SimpleApp.scala */ import org.apache.spark.S

  • 我试图通过JSE独立应用程序访问EJB。 在查找过程中找不到JNDI名称,这让我很苦恼。 经过一些研究,没有任何解决方案,我在Glassfish服务器日志中发现了一条部署后的消息,声明如下: “[glassfish 4.1][INFO][AS-EJB-00054][javax.enterprise.EJB.container][tid:_ThreadID=47 _ThreadName=admin

  • 问题内容: 我正在考虑开发由两部分组成的桌面应用程序: 用户界面(例如Java应用) 后端Node.js服务器 2个部分通过插座连接。不要问为什么我知道这很奇怪。 我将希望能够为客户提供带有安装程序的应用程序。我不希望用户必须自己安装Node.js。 有没有一种方法可以独立安装Node.js服务器,即无需在系统上全局安装Node.js。 对于任何(Windows,Linux,Mac OS X …)

  • 我们有一个连接到outlook的独立Java应用程序。office365.com使用基本授权。这是一个简单的监控应用程序。 我被要求将其移动到“现代”授权,因此这似乎是在创建Azure应用程序以获取OAUTH2的访问令牌。我“认为”我已经正确地完成了所有设置,包括Microsoft graph API(委托) 电子邮件IMAP。访问服务器。所有offline\u访问SMTP。邮寄 因此,我从以下位