亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Web Service 和 J2EE

2019-11-18 12:54:12
字體:
來源:轉載
供稿:網友

  在前面的文章中,我們已經把握了如何開發、配置和使用簡單的 Web service。我們也了解了一些高級的Web service概念,這其中包括狀態Web service、遠程調用和Web service 安全。本文中我們將開始研究Web service是如何在J2EE環境中工作的。
  理解Web Services和J2EE 集成原理
  當今,許多應用將三層業務邏輯作為標準的J2EE組件來實現。將這些組件用于SOAP Web service幾乎使它們被普遍應用,同時這也提供了一種集成這些組件的簡單機制。J2EE的標準組件體系結構使得這個過程變得相對輕易。
  本文中,我們將解釋如何使J2EE組件以Web service的形式發布,同時也會演示如何應用java Message Service (JMS)可靠地發送SOAP報文。我們將主要討論EnterPRise Java Beans(EJBs),這是因為EJBs是業務邏輯實現中使用最為廣泛的J2EE組件,當然所有演示過的方法也適用于其他的J2EE組件,例如JDBC數據源和JMS隊列。
  標準的J2EE處理
  我們首先來概括一下有關J2EE平臺的一些重要事實。傳統上來說,J2EE客戶端應用程序使用JNDI查找服務器方的J2EE組件。例如,客戶端應用程序查找JNDI中的EJB引用并收到一個EJB客戶端代理。客戶端在后面將使用這個代理來訪問EJB組件。所有的J2EE通信在正常情況下都發生在RMI上。
   Web Service 和 J2EE(圖一)
  圖 1:標準的JNDI使用
  J2EE - 基本方法
  有兩種通過SOAP訪問J2EE資源的方法。我們首先來看看最顯而易見的方法,這種方法可以在EJB四周創建Web service wrapper。該方法非凡適合于這樣的情況:Web service應用不直接映射到單獨EJB并且還需要J2EE 組件的附加信息。我們在第二個例子中將介紹一種以較少代碼實現透明集成的方法。這種方法的主要目標就是將現有的J2EE應用盡可能迅速的以Web service的形式動態發布。這種方法答應我們無須編寫或者修改任何代碼就可以高效的訪問現有的基于SOAP的J2EE應用。
  簡單的股票報價EJB Wrapper 演示樣本
  在這個演示樣本中,我們將介紹EJB wrapper Web service 方法,該方法可以訪問簡單的無狀態session bean:股票報價EJB。該方法雖然很簡單但是卻在許多SOAP框架中得到了廣泛應用。各種實現之間只存在一些細微的區別,這些實現通常會與開發流程的自動化水平相吻合。這種方法要求所實現的Web service包含一個或者多個現有的J2EE 組件。而這個wrapper起到SOAP與 RMI之間的橋梁作用??蛻舳藢OAP請求到這個wrapper,然后由wrapper把請求轉換成適合EJB 組件的RMI 請求。我們非凡推薦將該方法主要用于諸如無狀態Bean之類的無狀態J2EE資源。為了用該方法來訪問有狀態的資源,您將需要設置額外的生命周期服務來正確地刪除孤立的有狀態資源。
  我們首先需要執行一些簡單的安裝和配置步驟。
  注重:假如您還沒有下載用來創建指導實例的軟件,請參考30分鐘創建WebService。您還需要下載演示樣本的源代碼demo sources。 這里我們假設您已經把這個文件拷貝到c:/wasp_demo目錄。指導實例中所提到的所有Java源代碼都可以在解壓縮文件demo sources后得到的src子目錄中找到。它們位于com.systinet.demos.包中。同樣,演示樣本中的所有腳本程序都位于bin子目錄。盡管您并不需要下載和使用該軟件來理解這些文章,但是我們還是強烈推薦您這樣做。
  額外的安裝步驟:我們將在J2EE環境中使用Sun J2EE 1.3。(您可以從Sun的 Java website下載所需的軟件)。在安裝完J2EE 1.3 RI之后,您需要配置WASP Web service 運行時間以便使用Sun J2EE RI。這里提到的配置可以通過修改WASP Advanced高級安裝的Bin子目錄中的 env.bat腳本程序來實現。首先將下面一行變為注釋(在該行開始之處添加rem):
  set INSTALLATION_TYPE=standalone
  然后刪除同一文件中的下面一行的注釋:
  set INSTALLATION_TYPE=j2ee
  您需要修改位于c:/wasp_demo/bin Directory的env.bat文件。請為環境變量J2EE_HOME,WASP_HOME和WASP_DEMO設定正確的取值。
  
  一旦您完成了上面提到的安裝和配置步驟,請通過使用startJ2EE 和 startserver啟動J2EE 服務器并運行WASP Web service。
  
  下一步,運行deploy_j2ee 來編譯Java源代碼并配置我們在演示樣本使用的EJBs。
  
  注:在配置EJB之后,您需要重新啟動J2EE 服務器。
  
  假如您查看com.systinet.demos.stock包中的Java源代碼,就會發現StockQuote,StockQuoteHome類 和StockQuoteBean 類使用一個簡單getQuote方法實現了一個相當簡單的無狀態session bean。我們已經通過調用deploy 腳本程序對這個EJB進行了配置。您要確保使用J2EE的治理工具對所有的EJBs進行了正確配置。調用演示樣本bin目錄下的J2EEAdmin程序將啟動治理工具。
  
  現在我們來集中關注圖2中wrapper Web service 的實現。它實現了方法getQuote,該方法包含一個簡單的EJB 調用。首先,它從JNDI得到EJB的有效引用并創建一個EJB實例。然后它將在EJB上調用方法 getQuote,然后刪除該EJB。最后,調用結果返回到Web service 客戶端。在下面的代碼中您可以看到這些步驟:
  
  package com.systinet.demos.stock;
  import javax.naming.InitialContext;
  import javax.naming.Context;
  import javax.naming.NamingException;
  import java.rmi.RemoteException;
  public class StockQuoteService {
  public double getQuote(String symbol) throws Exception {
    // get the JNDI initial context
    System.err.println("Getting J2EE initial context");
    Context jndiContext = new InitialContext();
    // lookup the EJB home
    System.err.println("Looking up EJB Home");
    Object homeRef = jndiContext.lookup("Stock");
    StockQuoteHome home =
    (StockQuoteHome)javax.rmi.PortableRemoteObject.narrow(
    homeRef, StockQuoteHome.class);
    // create the EJB instance
    System.err.println("Creating EJB");
    StockQuote ejb = home.create();
    // call the getQuote method
    System.err.println("Calling getQuote");
    double quote = ejb.getQuote("SUNW");
    System.err.println("SUNW "+quote);
    // remove the EJB
    System.err.println("Removing EJB");
    ejb.remove();
    return quote;
  }
  
  }
  圖 2:簡單的 Web service EJB wrapper (StockQuoteService.java)
   現在我們可以通過運行deploy_service 腳本程序來配置EJB wrapper Web services。然后,運行run_wrapper 腳本程序來啟動Web service 客戶端??蛻舳藢ㄟ^wrapper Web service來調用EJB。
  注:為了說明wrapper方法的基本原來,我們盡可能使這個演示樣本簡單。然而,實際中的應用通常會復雜一些。wrapper 服務常用于集成多個EJBs的功能和其他的J2EE資源。在這些情況下,wrapper服務通常會顯現不同的編程接口而不是原始的beans。
  透明的J2EE 集成integration
  訪問J2EE資源的另一方法就是使用透明的集成框架。這里,透明是指我們沒有必要來編寫一個wrapper服務或者改變最初的J2EE代碼。假如您希望SOAP客戶端利用現有的J2EE資源或者通過因特網訪問J2EE資源,這種方法就非常有用了。
  下面所描述的透明的J2EE 集成框架將充分利用JNDI框架的優勢,這種優勢提供了一種訪問J2EE資源的抽象機制。正如我們先前所說的,在J2EE的正常流程中,J2EE客戶端將調用JNDI的lookup方法,而客戶端的JNDI提供者把這個請求通過RMI傳遞給J2EE服務器中的JNDI服務。JNDI給客戶端返回一個 J2EE代理??蛻舳耸褂眠@個代理,通過RMI遠程調用J2EE資源。在這個示例中,我們所使用的客戶端JNDI的提供者支持SOAP而不支持RMI。正如您在圖3中所看到的,當客戶端使用這個提供者發布一個JNDI請求時,該請求將通過SOAP發送到JNDI web service。 這個JNDI web service將在應用程序服務器JNDI中進行實際的查找并獲得J2EE代理。然后JNDI web service將一個基于SOAP的客戶端遠程引用返回給J2EE代理??蛻舳藨贸绦虼藭r就能夠使用這個遠程引用來調用J2EE資源。每一種方法調用都將通過SOAP傳遞給J2EE代理。J2EE代理會把請求重新定向到實際的J2EE資源。您可能會注重到J2EE資源或者客戶端代碼都不需要進行修改。只需在客戶端實施一個配置更改而已,即指向基于SOAP的JNDI提供者。
  Web Service 和 J2EE(圖二)
  圖 3: Web service有權使用JNDI
  注:大多數Web service運行時間服務器和應用程序服務器是在相同的上下文環境中運轉。因此,調用重定向方法將會非常迅速,并且不會降低性能。
  這種方法也適用于非Java的客戶端。因為JNDI Web service是一種標準的Web service,任何的SOAP客戶端都能夠充分利用它的透明調用框架。例如, Microsoft Visual Basic 客戶端可以調用JNDI Web service上的方法查詢并且獲得所請求的J2EE資源的Web service代理。
  對于在Web service運行時間創建的所有組件,JNDI Web service將執行自動遠程碎片賬集。當客戶端應用程序顯式丟棄遠程組件時,根據相關請求,這些組件中的大多數也會被丟棄。但是在松散連接條件下的Web services并不能保證做到適當刪除。這就是LifeCycle服務需要跟蹤并治理所有動態創建資源的原因。這種方法的主要優勢就

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线免费观看视频| 亚洲男人天堂手机在线| 国产在线高清精品| 91高清在线免费观看| 国产成人精品电影久久久| 国产成人精品电影久久久| 91沈先生作品| 亚洲色图综合久久| 亚洲国产精品久久久久秋霞蜜臀| 亚洲欧美国产日韩天堂区| 欧美日韩国产在线看| 亚洲经典中文字幕| 日本aⅴ大伊香蕉精品视频| 精品香蕉在线观看视频一| 久久精品成人一区二区三区| 成人免费福利视频| 欧美激情videoshd| 欧美性受xxxx白人性爽| 亚洲精美色品网站| 欧美日韩国产丝袜另类| 国产成人+综合亚洲+天堂| 色婷婷久久av| 伦理中文字幕亚洲| 91国内免费在线视频| 久久精品视频一| 日韩国产在线播放| 国产丝袜精品视频| 成人高h视频在线| 清纯唯美日韩制服另类| 欧美激情精品久久久久久大尺度| 久久av红桃一区二区小说| 中文字幕欧美精品日韩中文字幕| 91av视频在线播放| 18性欧美xxxⅹ性满足| 久久精品中文字幕一区| 国产精品www色诱视频| 亚洲美女视频网| 欧美另类极品videosbest最新版本| 国产精品成人国产乱一区| 国产日韩视频在线观看| 欧美肥臀大乳一区二区免费视频| 国产91在线播放| 日本道色综合久久影院| 亚洲黄页视频免费观看| 国产做受高潮69| 亚洲九九九在线观看| 热门国产精品亚洲第一区在线| 国产精品jvid在线观看蜜臀| 成人免费激情视频| 亚洲精品日韩欧美| 亚洲精品自在久久| 日韩在线观看精品| 国产成人av网| 国产不卡视频在线| 在线观看视频99| www.精品av.com| 精品国产区一区二区三区在线观看| 久久99精品久久久久久噜噜| 亚洲白虎美女被爆操| 精品久久久久久久久久国产| 日韩精品欧美国产精品忘忧草| 欧美电影免费观看大全| 日韩欧美精品中文字幕| 亚洲bt欧美bt日本bt| 日韩欧美999| 欧美日韩中文字幕在线视频| 日韩日本欧美亚洲| 国产精品偷伦免费视频观看的| 亚洲国产欧美一区二区三区久久| 久久视频在线观看免费| 97视频免费在线看| 亚洲成人久久一区| 国产福利视频一区二区| 国内外成人免费激情在线视频网站| 亚洲视频999| 国产精品电影网| 国产一区二区三区在线观看视频| 欧美大荫蒂xxx| 亚洲国产精品成人精品| 亚洲精品美女网站| 亚洲国产欧美一区二区三区同亚洲| 色多多国产成人永久免费网站| 国产欧美最新羞羞视频在线观看| 欧美黑人xxxx| 午夜精品免费视频| 欧美激情中文字幕在线| 日本亚洲欧洲色| 欧美日韩国产综合新一区| 免费av一区二区| 国产视频观看一区| 欧美日韩中文字幕综合视频| 91国内揄拍国内精品对白| 日韩免费在线免费观看| 国产日产欧美a一级在线| 国产97色在线|日韩| 美女扒开尿口让男人操亚洲视频网站| 中文字幕亚洲欧美| 久久五月天综合| 亚洲影院色在线观看免费| 久久天堂电影网| 黄色91在线观看| 亚洲免费人成在线视频观看| 伊人久久五月天| 久热精品视频在线免费观看| 91wwwcom在线观看| 国产精品老女人视频| 日本精品视频网站| 亚洲曰本av电影| 色悠悠国产精品| 亚洲综合视频1区| 久久亚洲综合国产精品99麻豆精品福利| 日日噜噜噜夜夜爽亚洲精品| 7777精品久久久久久| 亚洲天堂免费在线| 欧美国产第一页| 92看片淫黄大片看国产片| 亚洲欧美制服第一页| 久久99精品久久久久久噜噜| 清纯唯美日韩制服另类| 日韩电影大全免费观看2023年上| 亚洲男子天堂网| 北条麻妃一区二区三区中文字幕| 亚洲电影天堂av| 欧美日韩亚洲国产一区| 一区二区三区天堂av| 亚洲jizzjizz日本少妇| 久久久亚洲精选| 国产亚洲视频在线| 日韩精品免费在线视频观看| 日韩视频免费看| 色婷婷av一区二区三区在线观看| 欧美成人免费大片| 精品在线观看国产| 国产精品视频yy9099| 久久视频在线看| 国产精品va在线播放我和闺蜜| 亚洲欧洲国产伦综合| 日韩av黄色在线观看| 亚洲天堂av在线播放| 成人性生交xxxxx网站| 国产精品99久久99久久久二8| 日韩专区在线观看| 91干在线观看| 国产在线999| 日韩电影第一页| 国产成人亚洲综合91| 亚洲精品电影在线观看| 精品香蕉在线观看视频一| 亚洲福利影片在线| 97久久精品视频| 久久99视频免费| 78m国产成人精品视频| 欧美日韩国产综合新一区| 成人h猎奇视频网站| 成人精品福利视频| 久久久999精品免费| 成人免费激情视频| 日韩成人黄色av| 国产99久久久欧美黑人| 日韩精品福利在线| 国产视频精品xxxx| 成人在线视频网站| 欧美国产在线电影| 中文字幕欧美日韩|