微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在编写一个独立的应用程序,它将从Websphere 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:sql状态= 42815,错误代码= -4,461

但是如果提供用户名/密码,它就可以正常工作

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

如何在获取数据库连接时如何在不指定用户ID /密码的情况下正常工作

解决方法

大多数JDBC驱动程序供应商都允许在其数据源上设置用户和密码,然后将其用作所有请求的默认连接,而无需用户/密码。如果您在WebSphere Application Server中转到数据源的配置,然后转到“定制属性”,则应该能够为“用户”和“密码”添加属性,如果JDBC供应商支持它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?