Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从带有前缀jdbc的java访问weblogic数据源/_Java_Jdbc_Weblogic_Datasource - Fatal编程技术网

无法从带有前缀jdbc的java访问weblogic数据源/

无法从带有前缀jdbc的java访问weblogic数据源/,java,jdbc,weblogic,datasource,Java,Jdbc,Weblogic,Datasource,我在weblogic中创建了两个具有以下jndi名称的数据源 jdbc/testDatasource 测试数据源1 我能够使用java访问数据源testDatasource1,但在访问数据源jdbc/testDatasource时,我得到了下面提到的错误 javax.naming.NameNotFoundException: While trying to lookup 'jdbc.testDatasource' didn't find subcontext 'jdbc'. Resolved '

我在weblogic中创建了两个具有以下jndi名称的数据源

jdbc/testDatasource 测试数据源1 我能够使用java访问数据源testDatasource1,但在访问数据源jdbc/testDatasource时,我得到了下面提到的错误

javax.naming.NameNotFoundException: While trying to lookup 'jdbc.testDatasource' didn't find subcontext 'jdbc'. Resolved '' [Root exception is javax.naming.NameNotFoundException: While trying to lookup 'jdbc.testDatasource' didn't find subcontext 'jdbc'. Resolved '']; remaining name 'jdbc/testDatasource'

前缀jdbc/似乎带来了问题。

java是资源的根JNDI命名空间

所以也许你需要

dataSource = (javax.sql.DataSource) context.lookup("java:jdbc/testDatasource");

也许听起来很愚蠢,但既然这件事发生在我身上,我就和你分享

当您在Weblogic至少10.3.4下创建数据源时,不要忘记经历整个配置过程,在结束之前启用Finish按钮

在最后一页,您将能够激活服务器的数据源,而不仅仅是创建它


要检查数据库是否启动,可以查看服务器的JNDI树。

在某些情况下,这是由于数据源与服务器不在同一目标中造成的。应将使用数据源的服务器添加到相同的目标。

尝试以下操作,确保Context.PROVIDER\u URL中的端口是要运行应用程序的weblogic服务器的端口

Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://localhost:8002");

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try {
out.println("Connecting to DB......");
ctx = new InitialContext(ht);
javax.sql.DataSource ds= (javax.sql.DataSource) ctx.lookup ("jdbc/postdbsrc");
conn = ds.getConnection();

我遇到了同样的问题,现在已经解决了:

解决办法是

        String DATASOURCE_CONTEXT = prop.getProperty("tcDataSourceContext");
        log("DATASOURCE_CONTEXT.."+DATASOURCE_CONTEXT);
        Properties env = new Properties( ); 
        env.put(Context.INITIAL_CONTEXT_FACTORY,                                                                                                "weblogic.jndi.WLInitialContextFactory"); 
        env.put(Context.PROVIDER_URL,"t3://abc.com:8001");
        Context initialContext = new InitialContext(env);
        DataSource datasource =        (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
        if (datasource != null) {
            conn = datasource.getConnection();
        }
        else{
            log("Failed to lookup datasource.");
        } 
一,。abc.com是部署WebLogic的服务器URL。 2.8001是WebLogic Admin server正在侦听的端口号

三,。确保以下配置正确

错的一个: tcDataSourceContext=java:comp/env/jdbc/datasourcename

正确的一点: tcDataSourceContext=jdbc/datasourcename

四,。另外,转到WebLogic server并导航到/Oracle/Middleware/wlserver_10.3/server/lib/并执行以下命令

命令: java-jar-wljarbuilder.jar-profile-wlfullclient5

上面的命令创建一个包含所有jar的WebLogic服务器/lib文件夹的jar文件,并将其放置在客户机java代码构建路径和服务器/lib文件夹中


希望这有帮助!如果您有任何问题,请告诉我。

我也遇到过同样的问题。我的应用程序正在连接到在本地Oracle Sql Server Oracle XE 11g上运行的Oracle DB。从其他答案中,我看到删除Weblogic缓存/tmp、/cache甚至/logs可能会起作用。我的问题是本地服务Oracle服务XE已停止。我知道这很傻,但可能会有帮助。所以你应该做三件事: -清除缓存; -检查数据库服务器服务是否正在运行; -尝试重新启动WEBLOGIC服务器;
上面的这些东西对我很有用。

当我们在weblogic中的两个数据源中定义了相同的JNDI名称时,也会发生此错误。我创建了两个用于测试数据源不同属性的JNDI名称。我不得不删除其中一个,它工作得很好。

在我的例子中,这是因为数据源在部署过程中被破坏了。解决方法是添加一个新的方法=

@Bean(name = "dataSource", destroyMethod="")
public DataSource dataSource() {

  JndiDataSourceLookup lookup = new JndiDataSourceLookup();
  return lookup.getDataSource(jndiName);

}

在设置PROD服务器时,我在应用程序中也遇到了同样的问题

Sol:以web逻辑控制台节点或集群中的数据源为目标。 它对我有用

导航:
在控制台中:转到JDBC>JDBC数据源摘要>数据源1>选择要在其上部署此JDBC数据源的服务器或群集。

我遇到此异常:

javax.naming.NameNotFoundException: While trying to lookup 'jdbc.test_group_ir' didn't find subcontext 'jdbc'. Resolved ''; remaining name 'jdbc/test_group_ir'
    at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1224)
测试从weblogic控制台到数据库的连接时,给出了:

 Error weblogic.common.resourcepool.ResourceSystemException: Could not create connection for datasource 'test_group_ir_pool'. The returned message is: ORA-01017: invalid username/password;
似乎密码是错误的,这不一定是你的情况,因为第一个例外是一般性的,可能有不同的原因,一些已经解释了前面的答案,所以我只是添加我的

修复密码并测试数据库连接,然后:

对我有效的方法是通过删除C:\Oracle\Middleware\Oracle\u Home\user\u projects\domains\base\u domain\servers\AdminServer中的临时文件夹来清除WebLogic缓存。请确保在此之前停止服务器。

获取相同错误javax.naming.NameNotFoundException:在尝试查找“java:jdbc.testDatasource”时,未找到子上下文“java:jdbc”。已解析[根异常为javax.naming.NameNotFoundException:尝试查找“java:jdbc.testDatasource”时未找到子上下文“java:jdbc.Resolved];剩余名称“java:jdbc/testDatasource”是否发布jndi声明?prop.putContext.INITIAL_CONTEXT_工厂,weblogic.jndi.WLInitialContextFactory;prop.putContext.PROVIDER_URL,t3://localhost:8001/;prop.putContext.SECURITY_主体,weblogic;prop.putContext.SECURITY_凭证,welcome1;Context ctx=新的InitialContextprop;字符串dsName=java:jdbc/testDatasource;DataSource ds=DataSourcectx.lookupdsName;不,这不是jndi声明。查找xml文件。嗨,对不起,我没有找到你。我在main方法中运行这个,我可以知道这个xml文件在哪里,因为我还没有创建它。是的,这是这个错误最常见的原因。导航到:主页>JDBC数据源摘要>JDBC数据源-0:Target选项卡,并将服务器(例如AdminServer)分配为targetin。除此之外,请确保JDNI名称不存在
没有任何额外的空格,这也会引发此错误avax.naming.NameNotFoundException:在尝试查找时帮助我找到答案!最糟糕的是,我看到下一个按钮旁边的那个按钮,我有一种直觉,但让自己冷静下来说,它可能还需要我定义什么。我一看到你的回答,我就想。。。是的,就是我