通過
SOAP, RMI,
以及我們客戶化的隧道類等途徑,所有的遠程
POJO
實現都向外開放。之所以這么做,并不僅僅是因為網絡服務要應用于商務,而是根本上我們發現這樣做對集成來說簡直是太有用了。以下就有一個得益于此的企業集成案例。
3sixteen是一個做服裝T恤的公司,需要擴大發展。他們注意到了Liferay有意用之來集成一個商業門戶。但是,他們又感覺在一個超前時尚的服務行業Liferay似乎顯得有點太丑了,或者說不入格。為了解決這個矛盾,他們不得以把WEB表現層分成了兩個站點:一個產品展示站點和一個在線購買站點。
結果,
www.3sixteen.com
成了一個基于
Flash
技術的漂亮站點,而
my.3sixteen.com
則是一個基于
Liferay
的
vanilla
版本的在線購物站點。這兩個站點分別安裝在不同的兩個
Linux
主機上,基于目標及用途的考慮可以布署在不同的國家。
項目的一個重要需求是要建立一個郵件地址管理系統,用來收集目標客戶的郵件地址。于是,在
Flash
作的站點中我們加入了彈出工窗口,用來通過門戶服務器要增加記錄某客戶的這個郵件地址到系統中。
以下是相應的
JSP
片段,它利用
ABContactManagerHttp
的功能來增加新的聯系人。
String URL = "http://my.3sixteen.com";
HttpPrincipal httpPrincipal = new HttpPrincipal(URL, "joe_bloggs", "password");
ABContactManagerHttp.addContact(httpPrincipal, firstName, lastName, emailAddress);
ABContactManagerHttp
調用了
ABContactManagerUtil
中的
addContact
方法,而重要的是這個調用是通過
80
端口,直接由門戶站點的
http://my.3sixteen.com/tunnel/servlet/AuthTunnelServlet
接收,應用服務器只要判定認證合法之后,就以
ID
是
joe_bloggs
的用戶的身份
調用
addContact
方法,然后由
ABContactManagerUtil
調用實現類
ABContactManagerImpl
來完成真正的添加聯系人的工作。這一過程可能通過查自動生成的
JavaDocs
文檔中的源代碼來證實。
之后呢,那個Joe Bloggs就可以登錄門戶,通過查看它的地址本發現多了一個新的聯系人了。而且在系統的其它門戶單元也可以通過協助類(helper classses)達到同樣的目的。而另外一方面這也可能是一個安全隱患,因為隨便一個人就可以通過一個小JAVA(applets)或其它程序,從而直接調用有業務邏輯功能的EJB,只要他擁有認證的密碼。一個應對的方法是通過修改portal.properties來只指定特定的端口偵聽這類服務請求。
當然也可以通過
SOAT
或
RMI
等來調用
EJB。
Liferay是一個自下而上完整的應用系統提供者。以下是案例清單,它們都是單一門戶單一數據庫系統。
http://demo.liferay.net
http://my.ccuc.net
http://my.3sixteen.com
http://portal.liferay.com
http://www.gatewayfriends.org
http://www.jasonandiris.com
其中每個門戶的用戶都與其它門戶完全隔離,門戶間是依據各自的公司
ID
通過域來分割不同的空間。
如果對在同一機器集成多個
Liferay
有興趣,請參閱
Multiple Portals
。