亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JNDI入門學習

系統 2270 0

我們知道jndi是java的命名和目錄服務的api,為什么要有它了,是 因為我們在網絡條件下可能要查找和使用一些分布式的資源。

?

JNDI(Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應用中訪問命名和目錄服務的API。命名服務將名稱和對象聯系起來,使得我們可以用名稱訪問對象。目錄服務是一種命名服務,在這種服務里,對象不但有名稱,還有屬性。

?

JNDI(Java Naming and Directory Interface)是一個應用程序設計的API,為開發人員提供了查找和訪問各種命名和目錄服務的通用、統一的接口,類似JDBC都是構建在抽象層上。

?

Name Service:命名服務,將名字和一個對象關聯起來

Directory Service:目錄服務,是命名服務擴展和提高,對象不但有名稱,還有屬性,它提供對命名信息管理和操作(增刪改查)

?

JNDI-API:面向應用程序的開發者

JNDI-SPI:(服務提供者接口)面向服務器生產商

?

應用服務器一般都會自帶一個目錄服務器

?

在J2EE容器中配置JNDI參數

?

所有命名操作都相對于某一上下文,該初始上下文實現Context接口并提供解析名稱的起始點(類似于JS的document)

?

JBoss的JNDI連接工廠

env.put("java.naming.factory.initial", " org.jnp.interfaces.NamingContextFactory ");

設置命名服務器的URL

env.put("java.naming.provider.url", " localhost:1099 ");

備注:不同的應用服務器,JNDI的連接工廠代碼是不一致的,URL的端口也不一致。

?

使用Jboss動態的設定JNDI對象

?

      package hb.jndi;

import java.io.FileInputStream;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

public class TestJbossJNDI {

	public TestJbossJNDI() {
		super();
	}

	public static void main(String[] args) {
		try {
			Properties env = new Properties();

			// 載入jboss的SPI相關參數,包括初始上下文工廠,服務URL,等等
			env.put("java.naming.factory.initial",
					"org.jnp.interfaces.NamingContextFactory");
			env.put("java.naming.provider.url", "localhost:1099");

			// 通過JNDI api 初始化上下文
			InitialContext ctx = new javax.naming.InitialContext(env);
			// InitialContext ctx = new javax.naming.InitialContext();
			System.out.println("Got context");
			// create a subContext
			ctx.createSubcontext("/sylilzy");
			ctx.createSubcontext("sylilzy/sily");
			// rebind a object
			ctx.rebind("sylilzy/sily/a", "I am sily a!");
			ctx.rebind("sylilzy/sily/b", "I am sily b!");

			// lookup context
			Context ctx1 = (Context) ctx.lookup("sylilzy");
			Context ctx2 = (Context) ctx1.lookup("/sylilzy/sily");
			ctx2.bind("/sylilzy/g", "this is g");
			// lookup binded object
			Object o;
			o = ctx1.lookup("sily/a");
			System.out.println("get object from jndi:"
					+ "get object from jndi:" + o);
			// rename the object
			ctx2.rename("/sylilzy/g", "g1");
			o = ctx2.lookup("g1");
			System.out.println("get object from jndi:"
					+ "get object from jndi:" + o);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

    

?

操作步驟:

1、新建一個web工程,并引入C:\jboss-4.2.2.GA\client目錄下面的所有jar包

(將java文件打包成jar,然后放在jboss容器中即可)

2、在工程中添加上面這個java文件

3、啟動jboss,然后再運行上面的java文件

?

運行結果:

Got context

get object from jndi:get object from jndi:I am sily a!

get object from jndi:get object from jndi:this is g

?

備注:如果不適用Properties 對象設置環境變量,則可以使用jndi.properties文件,然后放在class目錄下面,即最外層的包目錄

JNDI入門學習

JNDI入門學習

jndi.properties的內容如下:

      java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    

?

?

使用JBoss 配置數據源,并訪問數據庫

1、將C:\jboss-4.2.2.GA\docs\examples\jca目錄下的oracle-ds.xml文件拷貝到C:\jboss-4.2.2.GA\server\default\deploy目錄下面,并做相應的修改,內容如下:

?

      <?xml version="1.0" encoding="UTF-8"?>


<datasources>
  <local-tx-datasource>
    <jndi-name>huangbiaoDS</jndi-name>
    <use-java-context>false</use-java-context>?
	<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
	
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <user-name>huangbiao</user-name>
    <password>huangbiao</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
       <metadata>
         <type-mapping>Oracle9i</type-mapping>
      </metadata>
  </local-tx-datasource>

</datasources>
    

?

2、然后在工程目錄下新建ConnectDB.java文件,用來測試連接數據庫

      package hb.jndi.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectDB {

	public static void main(String[] args) {
		Properties env = new Properties();

		// 載入jboss的SPI相關參數,包括初始上下文工廠,服務URL,等等
		env.put("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		env.put("java.naming.provider.url", "localhost:1099");

		Connection conn = null;
		PreparedStatement preStmt = null;
		ResultSet resultSet = null;
		try {
			// 通過JNDI api 初始化上下文
			InitialContext ctx = new InitialContext(env);
			
			DataSource datasource = (DataSource)ctx.lookup("huangbiaoDS");
			
			conn = datasource.getConnection();
			String sql="select * from student";
			preStmt = conn.prepareStatement(sql);
			resultSet = preStmt.executeQuery();
			while(resultSet.next()){
				System.out.println(resultSet.getString(2));
			}
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				resultSet.close();
				preStmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

}

    

?

備注:

對應的數據庫驅動應該添加到: C:\jboss-4.2.2.GA\server\default\lib目錄下面 (server目錄中對應的lib下),否則將無法連接到數據庫

?

操作步驟如下:

1、先啟動Jboss

2、然后在運行ConnectDB.java文件

JNDI入門學習


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品久久久午夜伊人 | 毛片免费网址 | 日本人一级毛片免费完整视频 | 神马影院午夜剧场 | 国内成人免费视频 | 一级特级女人18毛片免费视频 | 国产精品视频麻豆 | 国产三级精品三级男人的天堂 | 福利在线网站 | 国产对白有声小说 | 亚洲悠悠色综合中文字幕 | 国产精品一区在线播放 | 桃色视频网 | 精品国产视频在线观看 | 在线小视频国产 | 成人欧美精品一区二区不卡 | 午夜国产福利视频 | 看看的在线视频国产 | 欧美日韩一区二区三区久久 | 久久综合噜噜激激的五月天 | 国产福利精品视频 | 亚洲精品毛片久久久久久久 | 97精品视频在线观看 | 久久久受www免费人成 | 在线激情网址 | 2021国产精品自产拍在线 | 国产亚洲精品久久久久久久网站 | 中文字幕国产在线 | 爱爱视频在线观看 | 深夜福利视频在线一区 | 一级特黄牲大片免费视频 | 国产香蕉久久 | 色婷婷综合久久久久中文一区二区 | 亚洲精品成人网久久久久久 | 国产99在线播放免费 | 综合图片区| 九九伦理 | 国产另类图片 | 亚洲国产一区二区a毛片 | 精品日韩一区二区三区视频 | 91福利国产在线观看 |