我就来聊聊这个JNDI,也是折腾我好一阵子。一开始完全不知道这是个啥玩意,就觉得名字挺唬人的。后来工作需要用到,没办法,硬着头皮上呗。
我先去网上搜搜“JNDI到底是个什么”,发现这东西就是个接口,Java 搞出来的一套玩意,用来找各种资源的。打个比方,就像你家有很多电器,电视、冰箱、空调等等,每个都有自己的开关,JNDI 就像一个总控面板,你不用一个个去找那些开关,直接在面板上操作就行。一开始看到这里的时候我也还是一知半解,但是总比之前啥都不知道好多。
我这回主要是想用它来连数据库,省得每次都写一堆连接代码,麻烦得很。我就开始动手配置。
第一步,肯定是准备环境。我本机装的是 Tomcat,版本是 7.0,数据库用的是 MySQL。先把这些都准备好,别到时候配置一半发现环境不对,那就白瞎。
第二步,就是改 Tomcat 的配置文件。这玩意叫 ,就在 Tomcat 安装目录的 conf
文件夹里。我当时找这个文件也找一会儿,生怕改错地方。打开这个文件,找到 <Context>
标签,在里面加一段配置,大概长这样:
- <Resource>
- name="jdbc/myDataSource"
- auth="Container"
- type="*"
- driverClassName="*.Driver"
- url="jdbc:mysql://localhost:3306/mydatabase"
- username="root"
- password="123456"
- maxActive="20"
- maxIdle="10"
- maxWait="-1"
- </Resource>
这里面,name
就是给这个数据源起个名字,后面代码里要用;url
就是数据库的地址;username
和 password
就是数据库的用户名和密码;其他的几个参数,比如 maxActive
、maxIdle
,是用来控制连接池的,就是控制同时可以有多少个数据库连接,还有多少个空闲连接啥的。这个连接池大概就是一堆连接放在一起,想用就去取,用完还回去,省事不少。
第三步,就是在我的代码里用。就两行代码:
- Context initContext = new InitialContext();
- DataSource ds = (DataSource) *("java:comp/env/jdbc/myDataSource");
第一行就是创建一个 JNDI 的上下文环境,第二行就是通过刚才配置的那个名字 jdbc/myDataSource
去找到这个数据源。找到之后,就可以通过 来获取数据库连接,和平时用的 差不多,但是方便多,不用每次都写一堆参数。
我把代码跑起来,还真连上数据库!当时心里那个美,总算搞定这个 JNDI。虽然过程有点曲折,但是结果还是好的。以后再也不用写那么多重复的数据库连接代码,爽歪歪!而且这个配置,我还可以配置多个数据源,连不同的数据库,想想都觉得方便。这回也算是对 JNDI 有初步的解和实践,以后再遇到类似的问题,应该也能轻松应对。感觉自己又进步一点点!