Weblogic操作数据源NameNotFoundException解决办法
2016-03-16 11:39
573 查看
Weblogic提供了对各种数据库的支持,你可以通过Weblogic建立数据源,通过数据源访问数据库对象。
可以通过如下JAVA代码实现(假设我的数据源叫“AB”,数据库名称叫users,其中有id,name,password三个字段)
因为,我们没有配置数据源,所以找不到一个叫‘AB’的数据源。
为了解决这个问题,我们需要在Weblogic中对数据源进行相关的配置
(这里,我用的是weblogic12c版本,不同版本页面可能不一样,但是都差不多)
1)打开http://localhost:7001/console,登陆管理员账号,在下面,我们找到 一个叫数据源的选项
2)然后我们打开新建选项,新建一个一般数据源
3)接下来配置数据源
这里,要注意的是JNDI的名称是作为被访问的名称,还有数据库驱动程序选择你自己用的数据库驱动程序(Webloigc自带的)
3)一直下一步,你会看到这个选项,填写数据库名称,主机名,端口,登陆口令等等
4)一直next,到最后一步
这一步你要记得勾选AdminServer这个选项,说明也很清楚,如果你没有勾选这个选项,将不会部署数据源,那么你就会依然访问不了数据源,依然发生
javax.naming.NameNotFoundException。
以上事情完成之后,你就能正常访问数据源了。
可以通过如下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。
以上事情完成之后,你就能正常访问数据源了。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树