欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

JNDI入門學習

系統(tǒng) 2342 0

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

?

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

?

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

?

Name Service:命名服務,將名字和一個對象關聯(lián)起來

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

?

JNDI-API:面向應用程序的開發(fā)者

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

?

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

?

在J2EE容器中配置JNDI參數(shù)

?

所有命名操作都相對于某一上下文,該初始上下文實現(xiàn)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動態(tài)的設定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相關參數(shù),包括初始上下文工廠,服務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 對象設置環(huán)境變量,則可以使用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 配置數(shù)據(jù)源,并訪問數(shù)據(jù)庫

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文件,用來測試連接數(shù)據(jù)庫

      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相關參數(shù),包括初始上下文工廠,服務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();
			}
		}
		
	}

}

    

?

備注:

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

?

操作步驟如下:

1、先啟動Jboss

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

JNDI入門學習


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 奇米色777欧美一区二区 | 色五月丁香五月综合五月 | 精品一区二区视频 | 波多野结衣全部系列在线观看 | 国产肥熟 | 夜夜操狠狠干 | 久久精品一本到99热免费 | 久久精品国产99国产精品 | 成人伊人| 888奇米影视 | 成人无码T髙潮喷水A片小说 | 999毛片免费观看 | 亚洲人人 | 天天插天天射天天干 | av免费在线免费观看 | 国产精品成人一区二区三区 | 成人精品福利 | 精品国产午夜福利在线观看 | 欧美日韩成人在线观看 | 久在线播放| 羞羞电影在线观看 | 国产网址在线观看 | 男人的天堂久久 | 国产成人激情 | 色呦呦在线看 | 可以看的毛片 | 国产毛片一级 | 五月婷婷激情第五季 | 国产91久久精品 | 91在线播放免费不卡无毒 | 日本无码成人片在线观看波多 | 欧美国产日韩在线 | 久久久久九九九九 | 久久九九99热这里只有精品 | 国产精品久久久久久52AVAV | 亚洲91视频 | 精品无码中出一区二区 | 久久精品av麻豆的观看方式 | 亚洲人人爱| 91高清国产经典在线观看 | 久久伊人亚洲 |