首頁 > 軟體

Jetty JNDI開發實戰

2020-06-16 17:52:54

一、JNDI介紹

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:jtoolsh2bin>java -cp h2-1.4.188.jar org.h2.tools.Server
TCP 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');
至此,資料庫已經準備好了。

三、構建Demo專案
1、在Eclipse環境建立Maven專案
Group Id:com.ch.snippets.enterprise
Artifact Id:jetty-jndi-demo
Packaging:war

2、新增依賴包
在pom.xml組態檔中新增以下依賴包:
org.eclipse.jetty:jetty-server
org.eclipse.jetty:jetty-webapp
org.eclipse.jetty:jetty-plus
org.eclipse.jetty:jetty-jndi
com.h2database:h2

pom.xml組態檔具體如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ch.snippets.enterprise</groupId>
    <artifactId>jetty-jndi-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-plus</artifactId>
            <version>>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jndi</artifactId>
            <version>>9.3.2.v20150730</version>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.188</version>
        </dependency>
    </dependencies>
</project>

Jetty伺服器的安裝設定詳解 http://www.linuxidc.com/Linux/2015-09/123299.htm

使用Jetty作為嵌入式伺服器 http://www.linuxidc.com/Linux/2013-07/86983.htm

Jetty 原始碼分析 http://www.linuxidc.com/Linux/2013-10/90986.htm

Jetty安裝學習並展示 http://www.linuxidc.com/Linux/2014-05/101993.htm

Jetty在Eclipse中的安裝 http://www.linuxidc.com/Linux/2013-10/90991.htm

Linux(RedHat 5.8)下 安裝Jetty 部署 使用  http://www.linuxidc.com/Linux/2014-10/108342.htm


IT145.com E-mail:sddin#qq.com