|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.naming.InitialContext
public class InitialContext
此類別是執行命名操作的初始上下文。
所有命名操作都相對於某一上下文。該初始上下文實作 Context 介面並提供解析名稱的起始點。
在建構初始上下文時,使用傳遞給建構子的環境參數中以及所有應用程序資源檔案中定義的屬性初始化其環境。此外,可以將少數標準 JNDI 屬性指定為系統屬性或 applet 參數(通過使用 Context.APPLET
)。這些特殊屬性列於 Context 和 LdapContext 介面文檔的欄位詳細資訊部分。
JNDI 通過按順序合併取自以下兩個源的值來確定每個屬性值:
初始上下文實作是在運行時確定的。預設策略使用環境屬性 "java.naming.factory.initial
",該屬性包含初始上下文處理器的類別名稱。解析 URL 字元串時產生此策略的一個異常,如下所述。
在將 URL 字元串(一個 scheme_id:rest_of_name 形式的 String)作為名稱參數傳遞給任一方法時,將定位處理該方案的一個 URL 上下文處理器,並將它用於解析該 URL。如果沒有找到這樣的處理器,則使用由 "java.naming.factory.initial" 指定的初始上下文。類似地,當將第一個元件是 URL 字元串的 CompositeName 物件作為名稱參數傳遞給任一方法時,將定位一個 URL 上下文處理器並將它用於解析第一個名稱元件。有關如何定位 URL 上下文處理器的描述,請參見 NamingManager.getURLContext()
。
這一定位初始上下文和 URL 上下文處理器的預設策略可以通過調用 NamingManager.setInitialContextFactoryBuilder() 覆寫。
當無法實例化初始上下文時,將拋出 NoInitialContextException。此異常可以在與 InitialContext 進行的任何交互期間拋出,而不僅僅是在建構 InitialContext 時。例如,初始上下文的實作可能僅當在其上調用實際方法時惰性獲取上下文。當確定初始上下文存在時,應用程序不應該對它有任何依賴性。
當環境屬性 "java.naming.factory.initial" 為非 null 值時,InitialContext 建構子將試著創建在其中指定的初始上下文。此時,如果遇到問題,所涉及的初始上下文處理器可能拋出異常。不過,在驗證並向初始上下文使用者指示所有與環境屬性或連接有關的問題時,這將與提供者的實作有關。提供者也可以以延遲方式做到這一點:延遲到在上下文上執行某一操作時;在更急切的情況下,延遲到建構上下文時。
InitialContext 實例對多個執行緒的共時存取不同步。對於每個執行緒都操作一個不同 InitialContext 實例的多個執行緒而言,無需實作同步。需要共時地存取單個 InitialContext 實例的執行緒應該在它們之間實作同步並提供必需的鎖定。
Context
,
NamingManager.setInitialContextFactoryBuilder
欄位摘要 | |
---|---|
protected Context |
defaultInitCtx
該欄位保存調用 NamingManager.getInitialContext() 的結果。 |
protected boolean |
gotDefault
該欄位指示是否已通過調用 NamingManager.getInitialContext() 獲得了初始上下文。 |
protected Hashtable<Object,Object> |
myProps
與此 InitialContext 關聯的環境。 |
建構子摘要 | |
---|---|
|
InitialContext()
建構一個初始上下文。 |
protected |
InitialContext(boolean lazy)
建構一個帶有不進行初始化選項的初始上下文。 |
|
InitialContext(Hashtable<?,?> environment)
使用所提供的環境建構一個初始上下文。 |
方法摘要 | ||
---|---|---|
Object |
addToEnvironment(String propName,
Object propVal)
將一個新環境屬性添加到此上下文的環境中。 |
|
void |
bind(Name name,
Object obj)
將名稱綁定到物件。 |
|
void |
bind(String name,
Object obj)
將名稱綁定到物件。 |
|
void |
close()
關閉此上下文。 |
|
Name |
composeName(Name name,
Name prefix)
將此上下文的名稱與相對於此上下文的名稱組合。 |
|
String |
composeName(String name,
String prefix)
將此上下文的名稱與相對於此上下文的名稱組合。 |
|
Context |
createSubcontext(Name name)
創建並綁定一個新上下文。 |
|
Context |
createSubcontext(String name)
創建並綁定一個新上下文。 |
|
void |
destroySubcontext(Name name)
銷毀指定上下文,並將它從名稱空間中移除。 |
|
void |
destroySubcontext(String name)
銷毀指定上下文,並將它從名稱空間中移除。 |
|
static
|
doLookup(Name name)
獲取指定物件的靜態方法。 |
|
static
|
doLookup(String name)
獲取指定物件的靜態方法。 |
|
protected Context |
getDefaultInitCtx()
通過調用 NamingManager.getInitialContext() 獲取初始上下文,並將它快取記憶體在 defaultInitCtx 中。 |
|
Hashtable<?,?> |
getEnvironment()
檢索對此上下文有效的環境。 |
|
String |
getNameInNamespace()
在此上下文自己的名稱空間中檢索其完全名稱。 |
|
NameParser |
getNameParser(Name name)
檢索與指定上下文關聯的解析器。 |
|
NameParser |
getNameParser(String name)
檢索與指定上下文關聯的解析器。 |
|
protected Context |
getURLOrDefaultInitCtx(Name name)
獲取用來解析 name 的上下文。 |
|
protected Context |
getURLOrDefaultInitCtx(String name)
獲取用來解析字元串名稱 name 的上下文。 |
|
protected void |
init(Hashtable<?,?> environment)
使用所提供的環境初始化初始上下文。 |
|
NamingEnumeration<NameClassPair> |
list(Name name)
列舉綁定在指定上下文中的名稱,以及綁定到這些名稱的物件的類別名稱。 |
|
NamingEnumeration<NameClassPair> |
list(String name)
列舉綁定在指定上下文中的名稱,以及綁定到這些名稱的物件的類別名稱。 |
|
NamingEnumeration<Binding> |
listBindings(Name name)
列舉綁定在指定上下文中的名稱,以及綁定到這些名稱的物件。 |
|
NamingEnumeration<Binding> |
listBindings(String name)
列舉綁定在指定上下文中的名稱,以及綁定到這些名稱的物件。 |
|
Object |
lookup(Name name)
檢索指定的物件。 |
|
Object |
lookup(String name)
檢索指定的物件。 |
|
Object |
lookupLink(Name name)
按照除名稱的最終原子元件以外的連接檢索指定物件。 |
|
Object |
lookupLink(String name)
按照除名稱的最終原子元件以外的連接檢索指定物件。 |
|
void |
rebind(Name name,
Object obj)
將名稱綁定到物件,覆寫任何現有綁定。 |
|
void |
rebind(String name,
Object obj)
將名稱綁定到物件,覆寫所有現有綁定。 |
|
Object |
removeFromEnvironment(String propName)
從此上下文的環境中移除一個環境屬性。 |
|
void |
rename(Name oldName,
Name newName)
將一個新名稱綁定到已經被綁定到某一舊名稱的物件上,並取消對舊名稱的綁定。 |
|
void |
rename(String oldName,
String newName)
將一個新名稱綁定到已經被綁定到某一舊名稱的物件上,並取消對舊名稱的綁定。 |
|
void |
unbind(Name name)
取消對指定物件的綁定。 |
|
void |
unbind(String name)
取消對指定物件的綁定。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
protected Hashtable<Object,Object> myProps
addToEnvironment(java.lang.String, java.lang.Object)
,
removeFromEnvironment(java.lang.String)
,
getEnvironment()
protected Context defaultInitCtx
getDefaultInitCtx()
protected boolean gotDefault
defaultInitCtx
中。
建構子詳細資訊 |
---|
protected InitialContext(boolean lazy) throws NamingException
lazy
- 為 true 表示不初始化該初始上下文;為 false 等效於調用 new InitialContext()
NamingException
- 如果遇到命名異常init(Hashtable)
public InitialContext() throws NamingException
NamingException
- 如果遇到命名異常InitialContext(Hashtable)
public InitialContext(Hashtable<?,?> environment) throws NamingException
此建構子不會修改 environment 或保存一個對它的參考,但可能保存一個副本。
environment
- 用來創建初始上下文的環境。null 指示一個空環境。
NamingException
- 如果遇到命名異常方法詳細資訊 |
---|
protected void init(Hashtable<?,?> environment) throws NamingException
此方法將修改 environment 並保存一個對它的參考。調用者可能不再修改它。
environment
- 用來創建初始上下文的環境。null 指示一個空環境。
NamingException
- 如果遇到命名異常InitialContext(boolean)
public static <T> T doLookup(Name name) throws NamingException
InitialContext ic = new InitialContext();
Object obj = ic.lookup();
如果 name 為空,則返回此上下文的一個新實例(該實例表示與此上下文相同的命名上下文,但可以獨立地修改其環境,並可以共時地存取)。
name
- 要尋找的物件名稱
NamingException
- 如果遇到命名異常doLookup(String)
,
lookup(Name)
public static <T> T doLookup(String name) throws NamingException
doLookup(Name)
。
name
- 要尋找的物件名稱
NamingException
- 如果遇到命名異常protected Context getDefaultInitCtx() throws NamingException
NamingManager.getInitialContext()
獲取初始上下文,並將它快取記憶體在 defaultInitCtx 中。設置 gotDefault
,說明已執行過此操作。
NoInitialContextException
- 如果無法找到初始上下文。
NamingException
- 如果遇到命名異常。protected Context getURLOrDefaultInitCtx(String name) throws NamingException
name
的上下文。如果 name
名稱是一個 URL 字元串,則試著定位一個用於該字元串的 URL 上下文。如果沒有找到這樣的上下文,或者 name
不是一個 URL 字元串,則返回 getDefaultInitCtx()
。
有關子類別應該如何使用此方法的描述,請參見 getURLOrDefaultInitCtx(Name)。
name
- 非 null 名稱,將為其獲得上下文。
name
的 URL 上下文或者快取記憶體的初始上下文。結果不能為 null。
NoInitialContextException
- 如果無法找到初始上下文。
NamingException
- 如果遇到命名異常。NamingManager.getURLContext(java.lang.String, java.util.Hashtable, ?>)
protected Context getURLOrDefaultInitCtx(Name name) throws NamingException
name
的上下文。如果 name
名稱的第一個元件是一個 URL 字元串,則試著尋找一個用於該字元串的 URL 上下文。如果沒有找到這樣的上下文,或者 name
的第一個元件不是一個 URL 字元串,則返回 getDefaultInitCtx()
。
在創建 InitialContext 的子類別時,按以下方式使用此方法。定義一個使用此方法的新方法來獲得所需子類別的初始上下文。
當為子類別中的新方法提供實作時,使用這個新定義的方法獲取初始上下文。protected XXXContext getURLOrDefaultInitXXXCtx(Name name) throws NamingException { Context answer = getURLOrDefaultInitCtx(name); if (!(answer instanceof XXXContext)) { if (answer == null) { throw new NoInitialContextException(); } else { throw new NotContextException("Not an XXXContext"); } } return (XXXContext)answer; }
public Object XXXMethod1(Name name, ...) { throws NamingException { return getURLOrDefaultInitXXXCtx(name).XXXMethod1(name, ...); }
name
- 非 null 名稱,將為其獲取上下文。
name
的 URL 上下文或者快取記憶體的初始上下文。結果不能為 null。
NoInitialContextException
- 如果無法找到初始上下文。
NamingException
- 如果遇到命名異常。NamingManager.getURLContext(java.lang.String, java.util.Hashtable, ?>)
public Object lookup(String name) throws NamingException
Context
複製的描述Context.lookup(Name)
。
Context
中的 lookup
name
- 要查詢的物件的名稱
NamingException
- 如果遇到命名異常public Object lookup(Name name) throws NamingException
Context
複製的描述
Context
中的 lookup
name
- 要查詢的物件的名稱
NamingException
- 如果遇到命名異常Context.lookup(String)
,
Context.lookupLink(Name)
public void bind(String name, Object obj) throws NamingException
Context
複製的描述Context.bind(Name, Object)
。
Context
中的 bind
name
- 要綁定的名稱,不可以為空obj
- 要綁定的物件,可能為 null
NameAlreadyBoundException
- 如果已經綁定了 name
InvalidAttributesException
- 如果物件不支持所有強制屬性
NamingException
- 如果遇到命名異常public void bind(Name name, Object obj) throws NamingException
Context
複製的描述
Context
中的 bind
name
- 要綁定的名稱,不可以為空obj
- 要綁定的物件,可能為 null
NameAlreadyBoundException
- 如果已經綁定了 name
InvalidAttributesException
- 如果物件不支持所有強制屬性
NamingException
- 如果遇到命名異常Context.bind(String, Object)
,
Context.rebind(Name, Object)
,
DirContext.bind(Name, Object, javax.naming.directory.Attributes)
public void rebind(String name, Object obj) throws NamingException
Context
複製的描述Context.rebind(Name, Object)
。
Context
中的 rebind
name
- 要綁定的名稱,不可以為空obj
- 要綁定的物件,可能為 null
InvalidAttributesException
- 如果物件不支持所有強制屬性
NamingException
- 如果遇到命名異常public void rebind(Name name, Object obj) throws NamingException
Context
複製的描述如果該物件是一個 DirContext,則使用該物件的屬性替換與該名稱關聯的所有現有屬性。否則,與該名稱關聯的所有現有屬性保持不變。
Context
中的 rebind
name
- 要綁定的名稱,不可以為空obj
- 要綁定的物件,可能為 null
InvalidAttributesException
- 如果物件不支持所有強制屬性
NamingException
- 如果遇到命名異常Context.rebind(String, Object)
,
Context.bind(Name, Object)
,
DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
,
DirContext
public void unbind(String name) throws NamingException
Context
複製的描述Context.unbind(Name)
。
Context
中的 unbind
name
- 要取消綁定的名稱,不能為空
NameNotFoundException
- 如果不存在中間上下文
NamingException
- 如果遇到命名異常public void unbind(Name name) throws NamingException
Context
複製的描述name
的最終原子名稱,目標上下文由 name
的最終原子部分以外的所有名稱指定。
此方法是冪等的 (idempotent)。即使最終原子名稱沒有綁定在目標上下文中,該操作也能成功,但如果不存在任何中間上下文,則將拋出 NameNotFoundException。
所有與該名稱關聯的屬性都被移除。不更改中間上下文。
Context
中的 unbind
name
- 要取消綁定的名稱,不能為空
NameNotFoundException
- 如果不存在中間上下文
NamingException
- 如果遇到命名異常Context.unbind(String)
public void rename(String oldName, String newName) throws NamingException
Context
複製的描述Context.rename(Name, Name)
。
Context
中的 rename
oldName
- 現有綁定的名稱,不能為空newName
- 新綁定的名稱,不能為空
NameAlreadyBoundException
- 如果已經綁定了 newName
NamingException
- 如果遇到命名異常public void rename(Name oldName, Name newName) throws NamingException
Context
複製的描述
Context
中的 rename
oldName
- 現有綁定的名稱,不能為空newName
- 新綁定的名稱,不能為空
NameAlreadyBoundException
- 如果已經綁定了 newName
NamingException
- 如果遇到命名異常Context.rename(String, String)
,
Context.bind(Name, Object)
,
Context.rebind(Name, Object)
public NamingEnumeration<NameClassPair> list(String name) throws NamingException
Context
複製的描述Context.list(Name)
。
Context
中的 list
name
- 要列出的上下文的名稱
NamingException
- 如果遇到命名異常public NamingEnumeration<NameClassPair> list(Name name) throws NamingException
Context
複製的描述如果將某一綁定添加到此上下文,或者從此上下文中移除某個綁定,則對以前返回的列舉的影響是不確定的。
Context
中的 list
name
- 要列出的上下文的名稱
NamingException
- 如果遇到命名異常Context.list(String)
,
Context.listBindings(Name)
,
NameClassPair
public NamingEnumeration<Binding> listBindings(String name) throws NamingException
Context
複製的描述Context.listBindings(Name)
。
Context
中的 listBindings
name
- 要列出的上下文的名稱
NamingException
- 如果遇到命名異常public NamingEnumeration<Binding> listBindings(Name name) throws NamingException
Context
複製的描述如果將某一綁定添加到此上下文,或者從此上下文中移除某個綁定,則對以前返回的列舉的影響是不確定的。
Context
中的 listBindings
name
- 要列出的上下文的名稱
NamingException
- 如果遇到命名異常Context.listBindings(String)
,
Context.list(Name)
,
Binding
public void destroySubcontext(String name) throws NamingException
Context
複製的描述Context.destroySubcontext(Name)
。
Context
中的 destroySubcontext
name
- 要銷毀的上下文的名稱,不能為空
NameNotFoundException
- 如果不存在中間上下文
NotContextException
- 如果該名稱被綁定,但它沒有指定一個上下文,或者它沒有指定適當型別的上下文
ContextNotEmptyException
- 如果指定的上下文不為空
NamingException
- 如果遇到命名異常public void destroySubcontext(Name name) throws NamingException
Context
複製的描述此方法是冪等的。即使最終原子名稱沒有綁定在目標上下文中,該操作也能成功,但如果不存在任何中間上下文,則將拋出 NameNotFoundException。
在聯合命名系統中,取自某一命名系統的上下文可以綁定到另一個命名系統中的名稱上。隨後可以使用復合名稱在外部上下文 (foreign context) 中查詢和執行操作。不過,試圖使用此復合名稱銷毀上下文將失敗並拋出 NotContextException,因為外部上下文不是綁定該復合名稱的上下文的子上下文。改為使用 unbind() 移除外部上下文的綁定。銷毀外部上下文需要對取自該外部上下文的“本機”命名系統的上下文執行 destroySubcontext()。
Context
中的 destroySubcontext
name
- 要銷毀的上下文的名稱,不能為空
NameNotFoundException
- 如果不存在中間上下文
NotContextException
- 如果該名稱被綁定,但它沒有指定一個上下文,或者它沒有指定適當型別的上下文
ContextNotEmptyException
- 如果指定的上下文不為空
NamingException
- 如果遇到命名異常Context.destroySubcontext(String)
public Context createSubcontext(String name) throws NamingException
Context
複製的描述Context.createSubcontext(Name)
。
Context
中的 createSubcontext
name
- 要創建的上下文的名稱,不能為空
NameAlreadyBoundException
- 如果已經綁定了 name
InvalidAttributesException
- 如果創建子上下文需要指定強制屬性
NamingException
- 如果遇到命名異常public Context createSubcontext(Name name) throws NamingException
Context
複製的描述
Context
中的 createSubcontext
name
- 要創建的上下文的名稱,不能為空
NameAlreadyBoundException
- 如果已經綁定了 name
InvalidAttributesException
- 如果創建子上下文需要指定強制屬性
NamingException
- 如果遇到命名異常Context.createSubcontext(String)
,
DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)
public Object lookupLink(String name) throws NamingException
Context
複製的描述Context.lookupLink(Name)
。
Context
中的 lookupLink
name
- 要查詢的物件的名稱
NamingException
- 如果遇到命名異常public Object lookupLink(Name name) throws NamingException
Context
複製的描述
Context
中的 lookupLink
name
- 要查詢的物件的名稱
NamingException
- 如果遇到命名異常Context.lookupLink(String)
public NameParser getNameParser(String name) throws NamingException
Context
複製的描述Context.getNameParser(Name)
。
Context
中的 getNameParser
name
- 從中獲得解析器的上下文的名稱
NamingException
- 如果遇到命名異常public NameParser getNameParser(Name name) throws NamingException
Context
複製的描述
Context
中的 getNameParser
name
- 從中獲得解析器的上下文的名稱
NamingException
- 如果遇到命名異常Context.getNameParser(String)
,
CompoundName
public String composeName(String name, String prefix) throws NamingException
Context
中的 composeName
name
- 相對於此上下文的名稱prefix
- 此上下文相對於其一個祖先的名稱
prefix
和 name
的組合
NamingException
- 如果遇到命名異常public Name composeName(Name name, Name prefix) throws NamingException
Context
中的 composeName
name
- 相對於此上下文的名稱prefix
- 此上下文相對於其一個祖先的名稱
prefix
和 name
的組合
NamingException
- 如果遇到命名異常Context.composeName(String, String)
public Object addToEnvironment(String propName, Object propVal) throws NamingException
Context
複製的描述
Context
中的 addToEnvironment
propName
- 要添加的環境屬性的名稱,不能為 nullpropVal
- 要添加的屬性的值,不能為 null
NamingException
- 如果遇到命名異常Context.getEnvironment()
,
Context.removeFromEnvironment(String)
public Object removeFromEnvironment(String propName) throws NamingException
Context
複製的描述
Context
中的 removeFromEnvironment
propName
- 要移除的環境屬性的名稱,不能為 null
NamingException
- 如果遇到命名異常Context.getEnvironment()
,
Context.addToEnvironment(String, Object)
public Hashtable<?,?> getEnvironment() throws NamingException
Context
複製的描述調用者不應對返回的物件進行任何更改:因為這些更改對於上下文的影響是不確定的。可以使用 addToEnvironment() 和 removeFromEnvironment() 更改此上下文的環境。
Context
中的 getEnvironment
NamingException
- 如果遇到命名異常Context.addToEnvironment(String, Object)
,
Context.removeFromEnvironment(String)
public void close() throws NamingException
Context
複製的描述此方法是冪等的:對已經關閉的上下文調用此方法無效。對已關閉的上下文調用其他任何方法都是不允許的,這會導致不確定的行為。
Context
中的 close
NamingException
- 如果遇到命名異常public String getNameInNamespace() throws NamingException
Context
複製的描述許多命名服務都有一個“完全名稱”的概念,用於其各自的名稱空間中的物件。例如,LDAP 項有一個獨特的名稱,而 DNS 記錄有一個完全限定名。此方法允許客戶端應用程序檢索此名稱。此方法返回的字元串不是一個 JNDI 復合名稱,不應將它直接傳遞給上下文方法。在沒有完全名稱概念的命名系統中,將拋出 OperationNotSupportedException。
Context
中的 getNameInNamespace
OperationNotSupportedException
- 如果命名系統沒有完全名稱的概念
NamingException
- 如果遇到命名異常
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。