本文共 2792 字,大约阅读时间需要 9 分钟。
JNDI即Java Naming and Directory Interface,Java命名和目录接口,是Oracle公司提供的一种标准的Java命名系统接口,允许Java客户端根据命名发现或查询数据和对象。JNDI规范提供了一组标准的独立于命名系统的API,这些API构建在与命名系统有关的驱动之上,有助于将应用与实际的数据源相分离,因此不管应用访问的是LDAP、RMI、DNS、还是其他的目录服务。像数据源、邮件服务器、消息队列等都可以通过JNDI进行发现,JNDI的查询策略把应用程序从外部资源中抽象出来,并使得外部资源更易于配置。
本文详述在Jetty中使用JNDI进行查询。我们先注册一个JDBC数据源,再通过JNDI查询并访问此数据源。然后可以看到JNDI资源是如何配置到独立Jetty中的。本文使用到的工具可列表如下:
1)JDK 8.0.25 2)Maven 3.3.3 3)Eclipse JEE 4.5.0(mars版) 4)Jetty 9.3.2 5)H2 Database Engine 1.4.188注意,H2数据库可以通过单个JAR包运行,无需另外安装。
另外,假定我们要创建jcgexamle的数据表,它有两列,分别为ID列和ARTICLE_NAME列。C:\jtools\h2\bin>java -cp h2-1.4.188.jar org.h2.tools.ServerTCP server running at tcp://192.168.1.103:9092 (only local connections)PG server running at pg://192.168.1.103:5435 (only local connections)Web Console server running at http://192.168.1.103:8082 (only local connections)
此命令立即启动H2数据库的服务器模式,并自动打开浏览器,连接到H2的Web控制台,让用户创建和配置H2数据库。
选择中文(简体)语言,并填入
JDBC URL:jdbc:h2:tcp://localhost/~/jcgdb 用户名:sa 点击测试连接按钮,返回“测试成功”的信息。此时,H2数据库引擎会自动在文件系统的home目录中创建名为jcgdb.mv.db的数据库文件,然后我们可以运行下面的脚本来创建数据表jcgexamle,并插入两行记录:CREATE CACHED TABLE PUBLIC.JCGEXAMPLE( ID INTEGER, ARTICLE_NAME VARCHAR(255));insert into JCGEXAMPLE values(1,'Jetty JNDI Example');insert into JCGEXAMPLE values(2,'Jetty JMX Example');
至此,数据库已经准备好了。
Group Id:com.ch.snippets.enterprise
Artifact Id:jetty-jndi-demo Packaging:war在pom.xml配置文件中添加以下依赖包:
org.eclipse.jetty:jetty-server org.eclipse.jetty:jetty-webapp org.eclipse.jetty:jetty-plus org.eclipse.jetty:jetty-jndi com.h2database:h2pom.xml配置文件具体如下:
4.0.0 com.ch.snippets.enterprise jetty-jndi-demo 0.0.1-SNAPSHOT war org.eclipse.jetty jetty-server 9.3.2.v20150730 org.eclipse.jetty jetty-webapp 9.3.2.v20150730 org.eclipse.jetty jetty-plus >9.3.2.v20150730 org.eclipse.jetty jetty-jndi >9.3.2.v20150730 com.h2database h2 1.4.188