通過
SOAP, RMI,
以及我們客戶化的隧道類等途徑,所有的遠程
POJO
實現都向外開放。之所以這么做,并不僅僅是因為網絡服務要應用于商務,而是根本上我們發現這樣做對集成來說簡直是太有用了。以下就有一個得益于此的企業集成案例。
3sixteen是一個做服裝T恤的公司,需要擴大發展。他們注意到了Liferay有意用之來集成一個商業門戶。但是,他們又感覺在一個超前時尚的服務行業Liferay似乎顯得有點太丑了,或者說不入格。為了解決這個矛盾,他們不得以把WEB表現層分成了兩個站點:一個產品展示站點和一個在線購買站點。
結果, www.3sixteen.com 成了一個基于 Flash 技術的漂亮站點,而 my.3sixteen.com 則是一個基于 Liferay 的 vanilla 版本的在線購物站點。這兩個站點分別安裝在不同的兩個 Linux 主機上,基于目標及用途的考慮可以布署在不同的國家。
項目的一個重要需求是要建立一個郵件地址管理系統,用來收集目標客戶的郵件地址。于是,在 Flash 作的站點中我們加入了彈出工窗口,用來通過門戶服務器要增加記錄某客戶的這個郵件地址到系統中。
以下是相應的 JSP 片段,它利用 ABContactManagerHttp 的功能來增加新的聯系人。
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 。
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);
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 。