天天看點

Java技術與XML常見問題

======================================================

注:本文源代碼點此下載下傳

======================================================

java技術與xml常見問題

一般問題 |jaxp|jaxb|jaxm|jaxr|jax-rpc|j2ee

一般問題

xml 是什麼?

xml 是由誰開發的?

xml 最大的優點是什麼 ?

xml 有什麼應用?

xml 和 java 技術之間有何關系?

在 java 技術中使用 xml 有什麼優點?

sun 參與了哪些 xml 相關的活動?

在哪裡可以找到更多的文檔?

我可以向哪裡發送評論和建議?

是否還有其他由 sun 主辦的關于 xml 的郵件清單可供訂閱?

回到頁首

java api for xml processing(jaxp )

什麼是 java api for xml processing(jaxp )?

在哪裡可以閱讀關于 jaxp 的更多内容?

回到頁首

java architecture for xml binding( jaxb )

什麼是 java architecture for xml binding( jaxb )?

jaxv 、 sax 和 dom 有什麼不同?我應當選用哪一個?

jaxb 如何工作?

誰參與開發 jaxb ?

我從哪裡能夠閱讀到關于 jaxb 的更多内容?

回到頁首

java api for xml messaging (jaxm)

什麼是 java api for xml messaging (jaxm)?

jaxm 基于什麼标準?

是否必須在 j2ee 平台下使用 jaxm ?

什麼是消息提供者?

是否必須使用消息提供者?

jaxm 消息是否可以被路由到多個目的地?

是否能在 jaxm 消息中使用 ebxml 頭部?

回到頁首

java api for xml registries (jaxr)

什麼是 java api for xml registries (jaxr)?

jaxr api 與其他 xml api 之間有何關系?

為什麼對 java naming and directory interface( jndi )需要有一個新的 jaxr api ?

通過對 jaxr api 增加功能來增強 jndi api 會不會更好?

jaxr 資訊模型中的 association 的作用是什麼?在所有 api 中都沒有用到過它。

jaxr 資訊模型中的 classification 的作用是什麼?在所有 api 中都沒有用到過它。

為何 jaxr 是一個抽象的 api 。

       并且沒有像 uddi 或 ebxml 那樣針對特定的注冊項?

為什麼 jaxp api 沒有使用 uddi 的術語和概念?

為什麼 jaxr 資訊模型使用 ebxml registry information model 作為基礎。

       而不采用 uddi 資料結構?

為什麼沒有完整地開發 jaxr 資訊模型?

回到頁首

java api for xml-based rpc(jax-rpc)

什麼是 java api for xml-based rpc(jax-rpc)?

jax-rpc 如何使用 soap ?

什麼是 rpc ?

xml 如何與 rpc 相關聯?

對于 web 服務。

        jax-rpc 必須做哪些工作?

用戶端與 jax-rpc 伺服器之間采用什麼的互動模式?

遠端方法調用或響應能否傳送服務内容資訊?

為什麼 xrpcc 沒有生成 wsdl 檔案?

回到頁首

java 2 platform, enterprise edition

java 2 platform, enterprise edition 是否能使用 xml ?

是否能用 jsp 頁面生成動态的 xml 文檔?

回到頁首

一般問題

問:xml 是什麼?

答: xml,可擴充标記語言,是一種用于描述和構造獨立于應用程式邏輯的通用文法。xml 可以為特定行業和應用程式定義無限制的語言。

問:xml 是由誰開發的?

答: xml 是由網際網路聯盟( world wild web consortium , w3c )發起的。 xml 開發工作始于 1996 年。

一群從業界到學院的衆多種标記語言的專家,為 web 開發了一種簡化版本的 sgml (标準通用标記語言, standard generalized markup language ). 1998 年 2 月, xml 1.0 規範成為 w3c 的推薦标準。

問. xml 最大的優點是什麼?

答. xml 可以簡化和降低資料在 web 環境中進行交換和釋出所需要的成本。 xml 是一種可供計算機和人閱讀的基于文本的文法。 xml 可跨越不通平台和裝置提供資料可移植性和可重用性。它還具有靈活性和可擴充性,在不破壞現有文檔結構的前提下,允許添加新的标簽。基于 unicode , xml 提供全球語言支援。

問. xml 有什麼應用?

答. xml 在 b2b 網絡應用程式的資料交換格式中扮演重要角色,例如電子商務、供應鍊管理、工作流和應用內建。 xml 的另一個應用是結構化資訊管理,包括資料庫中的資訊。 xml 還提供了獨立于媒體的釋出,允許一次書寫文檔,以多種媒體格式和裝置進行釋出。在用戶端, xml 還用于建立帶有資料的定制視圖。

問. xml 和 java 技術之間有何關系?

答. xml 和 java 技術是互補的。 java 技術提供了可移植的、可維護的代碼,以便處理那些可移植的和可重用的資料。此外,xml 和 java 技術具有很多共同的特性,使得它們可以在 web 計算方面完美地結合,包括形成業界标準、平台獨立、可擴充、可重用、 以 web 為中心和國際化等方面。

問. 在 java 技術中使用 xml 有什麼優點?

答. 與其他程式設計語言如 c 或 c++ 相比, java 技術使軟體開發人員的生産力有了質的提高。此外,開發者使用 java 平台,可以建立可重用和可維護的複雜的應用程式,這是腳本語言無法做到的。協同使用 xml 和 java ,開發人員可以用很低的成本快速地建構複雜的和可互操作的 web 應用程式。

問. sun 參與了哪些 xml 相關的活動?

答. sun 積極參與 w3c 工作組,參加制定 xml 樣式表 / 轉換語言 (stylesheet/transformation , xsl/t) , xml schema,xlink 和 xml query。 sun 還參與了許多其他業界社團,包括 oasis,xml.org 以及 apache。

問. 在哪裡可以找到更多的文檔?

答. java 技術與 xml 文檔 頁面包含了本網站提供的所有關于 java 技術和 xml 文檔的完全清單。

問. 我可以向哪裡發送評論和建議?

答. 對于此項目的回報意見,請發電子郵件至 [email protected] 。

問. 是否還有其他的由 sun 主辦的關于 xml 的郵件清單可供訂閱?

答. 關于在 java 平台使用 xml 技術的一般性讨論話題,請訂閱 [email protected] 。

回到頁首

Java技術與XML常見問題

java api for xml processing(jaxp )

問. 什麼是 java api for xml processing(jaxp)?

答.java api for xml processing,或簡稱為“jaxp”,可使應用程式采用一種獨立于特定 xml 處理程式實作的 api 對 xml 文檔進行解析和轉換。 jaxp 還提供可插入特性,允許應用程式在特定 xml 處理程式實作之間很容易地切換。

要實作 xml 處理程式獨立性這一目标,應用程式應當限制使用 jaxp api,并避免使用與實作相關的 api 。根據具體的應用程式,這可能易于或難以實作。 jaxp 包括了如 dom 和 sax 在内的業界标準 api 。

jaxp 出現的原因就是為了友善在 java 平台上使用 xml 。例如,目前使用的 api ,如 dom level 2 ,不提供從一個 xml 輸入文檔中獲得一個 dom 文檔對象的方法, jaxp 則可以做到。( dom level 3 提供這種功能,新版本的 jaxp 規範也可能會支援這種新的 level 3 方案。) jaxp 的其他部分,如 javax.xml.transform 部分,不具備其他同等的獨立于 xslt 處理程式的 api 。

問. 在哪裡可以閱讀關于 jaxp 的更多内容?

答. 請參見 jaxp 常見問題 獲得更多資訊。

回到頁首

Java技術與XML常見問題

java architecture for xml binding( jaxb )

問. 什麼是 java architecture for xml binding( jaxb )?

答. java architecture for xml binding( jaxb )簡化了啟用 xml 的 java 程式的建立和維護。 jaxb 提供一個綁定的編譯器和一個運作時架構用來支援 xml 和 java 對象的雙向映射。綁定編譯器可将 w3c xml 樣式轉換成一個或多個 java 類,這個過程無需開發人員編寫複雜的解析代碼。模式派生類以及綁定架構可對輸入和輸出的 xml 文檔啟用錯誤或有效性檢查,因而可以確定系統接收、處理和生成有效而無誤的消息。更多資訊,請參閱 reference implementation 和 public draft specification,以上文檔均可在 jaxb 首頁下載下傳。

問. jaxb、sax 和 dom 有什麼不同?我應當選用哪一個?

答. sax 是一種事件驅動的 xml 解析器,适用于高速處理 xml ,因為它不在記憶體中生成資料表示。與之不同,dom 在記憶體中生成資料表示,允許應用程式對記憶體中的内容進行操縱。 sax 和 dom 都自動執行結構的有效性驗證。一個應用程式可以使用 sax 和 dom 進行内容有效性驗證,但這樣的應用程式必須提供額外的代碼,這可能會是複雜的、易于出錯和難以維護的。

一個 jaxb 應用程式可以使用由模式生成的 java 類對結構和内容進行有效性驗證。與 dom 類似,一個 jaxb 應用程式在記憶體中通過編組(marshalling) xml 文檔來構造内容樹,進而建立資料結構,這個樹包括派生類的執行個體對象。但與 dom 樹不同,内容樹是特定于某一種源模式的,不包含額外的樹操縱功能,不允許使用其派生類的通路器方法對資料進行通路,也不能動态地建構。如果文檔的内容是趨于動态且沒有完好限制的,則在處理内容之前,在處理那些沒有知名樣式的 xml 内容方面,dom 和 sax 要比 jaxb 更适合。

問. jaxb 如何工作?

答. 要建構 jaxb 應用程式,首先從 xml 模式開始。beta 版本要求模式語言是 xml schema 的 w3c 2001 recommendation。

在獲得 xml 模式之後,就可以建構和使用 jaxb 應用程式,按以下這些步驟:

1.将 xml schema 送出給綁定的編譯器,生成 java 源檔案。

您可以定制綁定聲明,進而覆寫 xml schema 元件與 java 表示之間的預設綁定。

編譯 java 源代碼。

3.使用類和綁定架構,編寫 java 應用程式,如下:

o建構表示 xml 資料的對象樹,該資料按 xml schema 是有效的,可以通過從文檔中解組(unmarshalling)資料或執行個體化要建立的類。

o通路和修改資料。

可以選擇對與限制相關的資料的更改進行驗證,這些限制在 xml schema 中表示。

o将資料整理為新的 xml 文檔。

問. 誰參與開發 jaxb ?

答. jaxb 由 java community process(jcp )正在進行開發,jcp 由專家組所組成,包括 ibm、software ag、bea systems、hewlett-packard、 tibco software inc.、 oracle、 fujitsu limited、breeze factor llc、macromedia inc. 和 intalio inc.。sun 是 w3c xml schema working group 最積極的成員,并與其他業界團體共同工作,如 oasis 和 xml.org 。

問. 我從哪裡能夠閱讀到關于 jaxb 的更多内容?

答. 對于 jaxb 更高層的解釋,請參閱 java web services tutorial 中的 jaxb 一章。還需提醒的是,詳細使用者指南也作為 jaxb 的一個部分釋出。更多關于 jaxb 的技術和細節描述,請參看最新版本的規範,您可以從 jaxb 首頁 下載下傳。請注意,此規範使用 adobe acrobat pdf 格式。免費下載下傳 adobe acrobat。

回到頁首

Java技術與XML常見問題

java api for xml messaging (jaxm)

問. 什麼是 java api for xml messaging(jaxm)?

答. java api for xml messaging(jaxm)是專門用于 internet 上交換 xml 商業文檔的 api 。常用于交換的 xml 文檔的例子有訂單、訂購确認和發票。您可以在發送的消息中附帶非 xml 資料。

問. jaxm 基于什麼标準?

答. jaxm 基于簡單對象通路協定(simple object access protocol , soap)1.1和 soap with attachments 規範。jaxm 還允許 soap 實作之上的标準協定實作,例如 soap-rp 或 ebxml transport, routing & packaging v1.0–message service specification。

問. 是否必須在 j2ee 平台下使用 jaxm ?

答. 不是,您可以免費使用 java 2 platform, standard edition (j2se),就像使用 java 2 platform, enterprise edition (j2ee) 一樣。一個獨立用戶端(不使用消息提供者的用戶端)可以使用 j2se 平台向可以處理請求-響應消息的 web 服務發送此消息。這不需要在用戶端進行部署或配置,是以很容易實作。

問. 什麼是消息提供者?

答. 消息提供者是一種服務,它使用消息傳送基礎設施來路由和傳遞消息。對于客戶來說,發送和接受消息是完全透明的。使用消息提供者的應用程式必須使用一個到消息提供者的連接配接,在 jaxm api 中稱之為 providerconnection 對象。使用消息提供者還需要某種部署和配置。通常情況下,用戶端使用運作在容器中的消息提供者-servlet 或 j2ee 容器。在部署的時候,用戶端需要為容器提供關于消息提供者的資訊。将來,會有一種部署工具使這個過程更簡單。

問. 是否必須使用消息提供者?

答. 不是。隻有當您的應用程式需要單向(異步)消息傳送時,您才需要使用消息提供者。在這種類型的消息中,一個消息作為一個操作發送給接受者,然後接受者在一段時間後使用另一個不同的操作進行響應。如果您的應用程式使用請求 - 響應樣式的消息傳送,回送此消息的響應被看作是同一個操作,您不需要消息提供者。當您不使用消息提供者時,您需要使用 soapconnection 對象,它支援更簡單的請求-響應消息模型。

問. jaxm 消息是否可以被路由到多個目的地?

答. 是的。可以在消息頭指定即時接受者。這種能力的一種使用方法是啟用自動業務處理。例如,兩個商業組織認可他們之間交換的 xml 文檔的環境,這樣他們可以實作自動生成的消息和響應。比方說這兩個商業組織約定訂單指令首先進入訂購部門,然後進入訂單确認部門,然後進入送貨部門,最後進入結算部門。每個部門有一個即時接受者(稱之為 actor)。在 actor 結束它的處理之後,它将删除頭部的所有關于自身内容,并将消息發送給頭部中所列出的下一個 actor 。

問. 我是否能在 jaxm 消息中使用 ebxml 頭部?

答. 是的,如果您使用一個在 soap 上實作的 ebxml 概要檔案,那麼可以使用 ebxml 頭部。一個概要檔案是一個标準協定,如 ebxml trp 或 soap-rp ,它工作在 soap 之上,提供附加功能。您需要使用消息提供者支援概要檔案,而且您需要讓接受者使用相同的概要檔案。

回到頁首

Java技術與XML常見問題

java api for xml registries (jaxr)

問. 什麼是 java api for xml registries (jaxr)?

答. java api for xml registries(jaxr)提供一個統一的、标準的 java api,用于通路不同類型的 xml registries。xml 注冊項是建構、部署和發現 web 服務的基礎設施。

問. jaxr api 與其他 xml api 之間有何關系?

答. jaxr 提供者的實作可以使用 jav api for xml-based rpc (jax-rpc) 在 jaxr 提供者與注冊項提供者之間的通信,此注冊項提供者輸出類似 rpc 的基于 soap 的接口(例如, uddi )。

jaxr 提供者的實作可能會使用 java api for xml messaging(jaxm)在 jaxr 提供者與注冊項提供者之間進行通信,該注冊項提供者輸出基于 xml messaging 的接口(如 ebxml trp )。

java api for xml processing (jaxp) 與 java architecture for xml binding (jaxb)會被 jaxr 提供者和 jaxr 用戶端使用,用于處理向 registry 送出或從 registry 中擷取的 xml 内容。

問. 為什麼對 java naming and directory interface(jndi)需要有一個新的 jaxr api ?

答. jndi api 采用與 jaxr api 完全不同的需求集合進行設計。這兩種抽象的 api 都遵循現有的規範。然而,抽象目錄服務與用于釋出和發現 web 服務的 xml registries 有很大的不同。jaxr api 需要更豐富的中繼資料能力以及查詢能力來進行分類和關聯。

問. 通過對 jaxr api 增加功能來增強 jndi api 會不會更好?

答. 這個選擇被考慮過。要滿足 xml registries 的額外需求,需要細化資訊模型。為了解決目錄服務的需求,在 jndi api 設計中強制使用了一個現有的資訊模型。擴充 jndi api 将限制 jaxr api ,并需要考慮實作 jndi api的後向相容性。

問. jaxr 資訊模型中的 association 的作用是什麼?在所有 api 中都沒有用到過它。

答. association 用于彼此關聯兩個 registryobjects 。在注冊項中的兩個對象之間可以定義一個 association,并使用 genericlifecyclemanager 的 saveobjects 方法進行送出。

問. jaxr 資訊模型中的 classification 的作用是什麼?在所有 api 中都沒有用到過它。

答. classification 用于對 registryobject 進行分類。可根據 registryobject 定義一個 classification,并使用 genericlifecyclemanager 的 saveobjects 方法送出該分類。

問. 為何 jaxr 是一個抽象 api,并且沒有像 uddi 或 ebxml 那樣針對特定的注冊項。

答. 抽象 jaxr api 可以讓開發人員編寫注冊項用戶端程式,這些程式是跨越多個目标注冊項可移植的。這與 java 的“一次編寫,到處運作”(write once, run anywhere)的理念是一緻的。它還提供了超越注冊項本身功能的增值能力。例如,一個非 jaxr 的 uddi 使用者不具備分類浏覽和分類智能查詢的能力,而 jaxruddi 使用者具備這些能力。

問. 為什麼 jaxp api 不使用 uddi 的術語和概念?

答. jaxr api 不針對 uddi 或其他任何一種注冊規範。它是一種涵蓋多種規範的抽象 api。它可讓開發人員在使用 web 服務注冊項和/或知識庫之間做出選擇。當 uddi 适用于 jaxr 資訊模型時(例如,service、servicebinding 以及 businessquerymanager 和 businesslifecyclemanager 中的方法名),jaxr api 使用 uddi 術語和概念。

問. 為什麼 jaxr 資訊模型使用 ebxml registry information model 作為基礎,而不采用 uddi 資料結構?

答. jaxr api 用于支援多注冊項。 ebxml registry information model 比 uddi 資料結構更通用且更易于擴充。出于這種特點,可以将 ebxml registry information model 進行擴充,來滿足 uddi 和其他注冊項的需要。

問. 為什麼沒有完整地開發 jaxr 資訊模型?

答. 資訊模型的開發需要很長時間。從現有資訊模型出發對其進行改進是很容易的。

回到頁首

Java技術與XML常見問題

java api for xml-based rpc(jax-rpc)

問題. 什麼是 java api for xml-based rpc(jax-rpc)?

答. java api for xml-based rpc(jax-rpc)使得 java 技術開發人員使用基于 xml 的 rpc 功能建構 web 應用程式和 web 服務,此功能遵循 soap(簡單對象通路協定,simple object access protocol)1.1 規範。

問題. jax-rpc 如何使用 soap ?

答. 請參考 jsr-101 。

問題. 什麼是 rpc?

答. rpc 代表遠端過程調用(remote procedure call),它是能使用戶端執行其他系統中程式的一種機制。rpc 機制常用于分布式用戶端/伺服器模型。伺服器将服務定義為一系列過程,可供遠端用戶端調用。

問題. xml 如何與 rpc 相關聯?

答. 遠端過程調用是由基于 xml 的協定來表示的,比如 soap 。除了定義信封結構和編碼規則之外,soap 規範還定義了遠端過程調用和響應的表示慣例。

問題. 對于 web 服務,jax-rpc 必須做哪些工作?

答. 一個基于 xml 的 rpc 伺服器應用程式可以定義、描述和導出一個的 web 服務,如同基于 rpc 的服務一樣。wsdl(web 服務描述語言,web service description language)定義了一種 xml 格式,将服務描述為一組消息操作的端點集合。通過使用 jax-rpc api ,開發人員可以用 wsdl 描述來實作用戶端和服務。

問題. 用戶端與 jax-rpc 服務之間采用什麼互動模式?

答. 有以下三種不同的模式:

同步請求-響應(synchronous request-response):用戶端調用遠端程式并阻塞,直到它收到一個傳回值或異常。

單向 rpc(one-way rpc):用戶端調用遠端過程,但自身不阻塞或等待直到收到一個傳回值。jax-rpc 用戶端的運作時系統可能會抛出異常。

非阻塞 rpc 調用(non-blocking rpc invocation):用戶端調用遠端過程,并繼續處理同一個線程的内容而不等待傳回值。此後,用戶端通過阻塞來接受傳回值或輪詢傳回值,以此來處理遠端方法的傳回。

問題. 遠端方法調用或響應能否傳送服務内容資訊?

答. 是的。例如它可能會傳送唯一的事務辨別符或數字簽名。

問題. 為什麼 xrpcc 沒有生成 wsdl 檔案?

答. xrpcc 工具實際上可以生成 wsdl 檔案,但由于設計失誤,如果不指定 –keep 選項,該檔案會同源檔案一起被删除。您可以使用 –keep 選項讓 xrpcc 不删除 wsdl 或 .java 源檔案。如果您使用 –s sourcepath 選項,所有源檔案将被放置在 sourcepath 目錄中,然後您可以很容易地删除它們。 wsdl 檔案将被放置在目前目錄或由 –d 選項指定的目錄中。

回到頁首

Java技術與XML常見問題

java 2 platform, enterprise edition

問題. java 2 platform, enterprise edition 是否能使用 xml ?

答. java 2 platform, enterprise edition (j2ee) 促進了在松耦合商業系統之間使用 xml 進行資料消息傳遞。j2ee 參考實作包括了 java api for xml parsing(jaxp) 。

javaserver pages(jsp)可以在多層伺服器之間或伺服器與用戶端之間生成和使用 xml 。java 消息服務(java message service, jms)提供了用于 xml 資料消息的異步傳送機制。enterprise javabeans (enterprise javabeans ,ejb) 提供一種健壯的同步傳輸機制,允許用 xml 标簽調用業務服務對象。ejb 還使用 xml 描述它的部署屬性,例如事務和安全。

問題. 是否能用 jsp 頁面生成動态的 xml 文檔?

答. jsp 頁面能夠生成 xml 頁面。 xml 頁面可以用 jsp 生成,包括用于生成文檔動态部分的那些元素。 jsp 規範包括強大的标簽擴充機制,可以用來執行基于 xml 的操作,例如将 xslt 轉換應用于一個 xml 文檔。

回到頁首

======================================================

在最後,我邀請大家參加新浪APP,就是新浪免費送大家的一個空間,支援PHP+MySql,免費二級域名,免費域名綁定 這個是我邀請的位址,您通過這個連結注冊即為我的好友,并獲贈雲豆500個,價值5元哦!短網址是http://t.cn/SXOiLh我建立的小站每天訪客已經達到2000+了,每天挂廣告賺50+元哦,呵呵,飯錢不愁了,\(^o^)/