无法从带有前缀jdbc的java访问weblogic数据源/
我在weblogic中创建了两个具有以下jndi名称的数据源 jdbc/testDatasource 测试数据源1 我能够使用java访问数据源testDatasource1,但在访问数据源jdbc/testDatasource时,我得到了下面提到的错误无法从带有前缀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 '
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:在尝试查找时帮助我找到答案!最糟糕的是,我看到下一个按钮旁边的那个按钮,我有一种直觉,但让自己冷静下来说,它可能还需要我定义什么。我一看到你的回答,我就想。。。是的,就是我