偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一個(gè)老邁企業(yè)應(yīng)用的自述

企業(yè)動(dòng)態(tài)
HTTP請求到達(dá)一個(gè)機(jī)器, 經(jīng)過簡單的處理以后發(fā)現(xiàn)需要執(zhí)行業(yè)務(wù)邏輯,于是這個(gè)機(jī)器就發(fā)起對(duì)EJB的調(diào)用 , 這個(gè)EJB可能在本機(jī), 也可能在另外一個(gè)機(jī)器上, 跨越網(wǎng)絡(luò)的訪問此起彼伏,序列化和反序列化源源不斷,場面蔚為壯觀 。

 [[203147]]

我是一個(gè)上個(gè)世紀(jì)末開發(fā)的企業(yè)應(yīng)用,年紀(jì)一大把了,不像那些年輕的系統(tǒng),用著很多又酷又炫的新技術(shù),什么前后端分離了,什么React了,響應(yīng)式設(shè)計(jì)了, 我這里都沒有, 不怕你笑話,我這里只有老掉牙的JSP。

但是我也有一些年輕的系統(tǒng)所沒有的東西, 比如EJB 。

這個(gè)被大家拋棄的家伙還在我這里勤勤勉勉、任勞任怨地工作, 它住在應(yīng)用服務(wù)器中, 用Session Bean來處理我們的業(yè)務(wù)邏輯, 用Entity Bean 來實(shí)現(xiàn)我們的O/R Mapping。

提到應(yīng)用服務(wù)器,Websphere, Weblogic 可是鼎鼎大名,當(dāng)年很多公司為了展示自己使用了***最熱門的技術(shù)(也可能是為了政績),紛紛掏腰包花大價(jià)錢購買。

我挺羨慕隔壁公司的Weblogic, 每天生活極其悠閑,整天就是處理一下Servlet和JSP, 和他那超級(jí)強(qiáng)悍的硬件和軟件完全不匹配,我常常帶著羨慕的口吻酸酸地評(píng)價(jià): 你干的可都是Tomcat的活啊。

對(duì)比之下,我們公司還算是比較良心的, 至少把EJB這個(gè)應(yīng)用服務(wù)器的核心功能給使用起來了, 我們還把4臺(tái)機(jī)器組成了一個(gè)集群做負(fù)載均衡, 每個(gè)EJB都會(huì)部署4份, 完全不用擔(dān)心一個(gè)機(jī)器掛掉了怎么辦。

各位看官, 那可真是分布式計(jì)算啊! 這些EJB對(duì)象分布在不同的機(jī)器上,時(shí)不時(shí)地被激活,被調(diào)用。

你可以想象一下, HTTP請求到達(dá)一個(gè)機(jī)器, 經(jīng)過簡單的處理以后發(fā)現(xiàn)需要執(zhí)行業(yè)務(wù)邏輯,于是這個(gè)機(jī)器就發(fā)起對(duì)EJB的調(diào)用 , 這個(gè)EJB可能在本機(jī), 也可能在另外一個(gè)機(jī)器上, 跨越網(wǎng)絡(luò)的訪問此起彼伏,序列化和反序列化源源不斷,場面蔚為壯觀 。

有人可能要問了:這些EJB對(duì)象是分布式的, 你都不知道他們在哪個(gè)機(jī)器上, 你怎么去調(diào)用他們呢?

這是個(gè)好問題, 當(dāng)時(shí)我也很發(fā)愁,想了很久,終于找到了一個(gè)辦法: 把鍋甩給Websphere, Weblogic這樣的應(yīng)用服務(wù)器 , 誰讓他們這么貴呢!

具體的方法其實(shí)很簡單:我會(huì)給每個(gè)EJB都起個(gè)名,比如"order/OrderBean", Websphere/Weblogic需要把這個(gè)名字和實(shí)際的EJB對(duì)象給綁定起來 -- 很明顯這個(gè)工作很困難但是極為重要-- 這樣當(dāng)我需要使用EJB的時(shí)候, 我就可以簡單地通過這個(gè)名字去查找一下,獲得EJB對(duì)象了。

  1. OrderBean orderBean = (OrderBean) context.lookup("order/OrderBean"); 

至于這個(gè)OrderBean是從哪個(gè)機(jī)器來的,作為應(yīng)用層的我根本不關(guān)心,只要我能找到一個(gè)這樣的EJB對(duì)象, 我就可以工作了。

你可能還會(huì)問: 難道真的要把OrderBean對(duì)象從另外一個(gè)機(jī)器Copy的你的機(jī)器上嗎?

No No, 根本不是, 這背后的魔法其實(shí)是遠(yuǎn)程方法調(diào)用(RMI),當(dāng)我去查找對(duì)象的時(shí)候,看起來應(yīng)用服務(wù)器給我返回了一個(gè)OrderBean, 實(shí)際上這只是一個(gè)存根(Stub),一個(gè)假對(duì)象而已!但是通過“假對(duì)象”,方法調(diào)用的參數(shù)可以被發(fā)送給遠(yuǎn)程機(jī)器上的真正對(duì)象,去執(zhí)行業(yè)務(wù)邏輯。 對(duì)了,這不就是你們常說的遠(yuǎn)程代理模式嗎?

通過名稱來查找對(duì)象這種方法讓我的日常工作變得極為便利,應(yīng)用服務(wù)器則怨聲載道,畢竟這是一件費(fèi)心費(fèi)力的事情, 但是為了占領(lǐng)市場,他們也不得不這么做。 我暗地里把這種工作方式叫Java Naming Service (Java 命名服務(wù))

后來我發(fā)現(xiàn),JDBC訪問數(shù)據(jù)庫也可以這么辦啊。 我為什么要在代碼中寫下數(shù)據(jù)庫的IP,端口,數(shù)據(jù)庫名,用戶名、密碼 ? 使用命名服務(wù), 也可以把這個(gè)鍋扔給應(yīng)用服務(wù)器: 我只知道數(shù)據(jù)源的名稱jdbc/OrderDB,至于它在什么地方,就不要來煩我了:

看看,通過名稱拿到一個(gè)叫做DataSource的對(duì)象,直接就可以獲得數(shù)據(jù)庫連接了。

再接再厲,把消息隊(duì)列相關(guān)的也給改了, 通過名稱(jms/OrderConnFactory)來獲取一個(gè)消息隊(duì)列的對(duì)象, 然后發(fā)送消息:

給大家畫個(gè)圖看看這個(gè)命名服務(wù)吧,客戶端可以通過lookup 的方式查找, 查找出的可能是直接的對(duì)象,也有可能是一個(gè)引用,指向了數(shù)據(jù)源,消息隊(duì)列,EJB等。

仔細(xì)想一想, 我這個(gè)命名服務(wù)和文件系統(tǒng)還有幾分相像, 都是給定一個(gè)名稱(如 C:\Users\admin\Documents\Test.java) , 然后獲得一個(gè)對(duì)象的引用(如File對(duì)象) , 看來這個(gè)世界在底層思想上都是相通的啊。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號(hào)coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2017-02-23 14:30:09

SpringhibernateJava

2019-03-05 12:56:41

APP企業(yè)級(jí)應(yīng)用應(yīng)用程序

2023-08-25 16:33:10

2015-07-02 09:56:48

ReactiveCociOS

2020-11-13 07:08:51

Spring Boot應(yīng)用Spring

2012-07-19 13:49:20

2015-04-19 20:53:30

安華金和數(shù)據(jù)庫安全

2014-04-04 09:13:34

網(wǎng)絡(luò)設(shè)計(jì)網(wǎng)絡(luò)安全性設(shè)計(jì)網(wǎng)絡(luò)安全

2019-11-07 14:00:36

MySQL數(shù)據(jù)庫SQL

2014-10-28 14:28:32

百度

2018-12-29 08:15:28

Tomcat應(yīng)用部署

2018-05-29 09:48:29

前端開發(fā)創(chuàng)業(yè)

2016-08-04 16:02:34

云計(jì)算

2013-02-25 14:20:14

企業(yè)級(jí)移動(dòng)應(yīng)用移動(dòng)互聯(lián)網(wǎng)

2017-05-16 09:55:28

Android調(diào)試debug

2014-10-15 11:01:02

Web應(yīng)用測試應(yīng)用

2024-06-28 08:49:24

2013-08-07 13:58:21

Android應(yīng)用圖標(biāo)

2009-07-06 18:28:26

Java Socket

2012-11-20 09:33:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)