Weblogic操作数据源NameNotFoundException解决办法

本文介绍如何在WebLogic中配置数据源,并提供了一个Java示例程序来演示如何使用配置好的数据源访问数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Weblogic提供了对各种数据库的支持,你可以通过Weblogic建立数据源,通过数据源访问数据库对象。


可以通过如下JAVA代码实现(假设我的数据源叫“AB”,数据库名称叫users,其中有id,name,password三个字段)


import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;

/**
 * Created by Administrator on 2016/3/16.
 */
public class TestJndi {
    public static void main(String[] args) throws Exception{
        DataSource ds=null;
        Context context;
        Connection connection=null;

//      初始化一个Context对象
        Hashtable hashtable = new Hashtable();
        hashtable.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
        context=new InitialContext(hashtable);
//        通过Context对象查找数据源
        ds= (DataSource) context.lookup("AB");
        connection= ds.getConnection();
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
//        遍历
        while (resultSet.next()){
            System.out.println("id="+resultSet.getString("id"));
            System.out.println("name="+resultSet.getString("name"));
            System.out.println("password="+resultSet.getString("password"));

        }

    }
}
这时直接运行将会报错,出现一个NameNotFoundException

Exception in thread "main" javax.naming.NameNotFoundException: Unable to resolve 'AB'. Resolved '' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'AB'. Resolved '']; remaining name 'AB'
	at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1180)
	at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:270)
	at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:187)
	at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:210)
	at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
	at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:701)
	at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:231)
	at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:527)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
	at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:523)
	at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: javax.naming.NameNotFoundException: Unable to resolve 'AB'. Resolved ''
	at weblogic.utils.StackTraceDisabled.unknownMethod()


因为,我们没有配置数据源,所以找不到一个叫‘AB’的数据源。

为了解决这个问题,我们需要在Weblogic中对数据源进行相关的配置

(这里,我用的是weblogic12c版本,不同版本页面可能不一样,但是都差不多)


1)打开http://localhost:7001/console,登陆管理员账号,在下面,我们找到 一个叫数据源的选项



2)然后我们打开新建选项,新建一个一般数据源



3)接下来配置数据源


这里,要注意的是JNDI的名称是作为被访问的名称,还有数据库驱动程序选择你自己用的数据库驱动程序(Webloigc自带的)

3)一直下一步,你会看到这个选项,填写数据库名称,主机名,端口,登陆口令等等


4)一直next,到最后一步


这一步你要记得勾选AdminServer这个选项,说明也很清楚,如果你没有勾选这个选项,将不会部署数据源,那么你就会依然访问不了数据源,依然发生

javax.naming.NameNotFoundException。


以上事情完成之后,你就能正常访问数据源了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值