Thẻ renderURLtạo ramột URLtham chiếuđếnPortlet hiện tạivàthực thimột sốyêucầurendervới cácthamsốkhởitạo.
đóngvàthẻmởrenderURL.
BùiVĩnhPhú 60 ĐặngĐình
Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA
Chương 6
Bùi Vĩnh Phú 61 Đặng Đình Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA
1. Giới thiệu về chuẩn JSR 170
Chuẩn JSR 170 dùng để định nghĩa cách thức lưu trữ và truy xuất dữ liệu. Có nhiều loại dữ liệu được hỗ trợ như: hệ quản trị cơ sở dữ liệu, hệ thống tập tin của hệ điều hành,tập tin XML…Ngoàira, chuẩn này còncung cấp cácAPI và các cơ chế để chuyển đổi giữa các cơ sở dữ liệu cũng như hỗ trợ cho việc truy xuất cơ sở dữ liệu, như:lưutrữdữliệutheocấutrúccây,quảnlýphiênbảndữliệu,lắngnghesựkiệnxảy ratrêncấutrúclưutrữdữliệu,khôngchotruycậpvàodữliệu…
Phiên bảnhiện tạicủa chuẩnJSR 170là 0.16.2được đưara bởi DayManagement AG vào ngày 25/01/2005. (http://jcp.org/en/jsr/detail?id=170). Hình vẽ sau mô tả cách thứcgiaotiếpcủaJSR170vớicáchệcơ sởdữliệu.
Repository DBMS Repository FileSystem Repository XML
Hình18:ChuẩnJSR170giaotiếpvớicơsởdữliệu
Bùi Vĩnh Phú 62 Đặng Đình
Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA
2. Mô hình repository
Một JCR (Java Content Repository) bao gồm một hay nhiều workspace, mỗi workspace là một cấu trúc cây gồm nhiều item, một item có thể là một node hay một property, mỗinodecóthể khôngcócon haycónhiềuconvà khôngcóproperty haycó nhiều property.Có duynhất mộtnode không cócha gọilà root. Tấtcả cácnode ngoại trừ root có ít nhất một cha. Property có một cha và không có con, được gọi là lá của cây. Property làmột đơn vị nội dung nhỏ nhất bao gồm tên và giá trị tương ứng .Dữ liệuthựcsựđượcchứađựngtronggiátrịcủaproperty.
Hình 19: Mô hình một workspace của một repository
Bùi Vĩnh Phú 63 Đặng Đình
Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA
Trong biểu đồtrên, root có3 nodecon làa,bvàc. Mỗi node concó nhiềunode con haynhiều Property, chẳnghạn node acó 2con làd vàe, node e có2 propertylà j vàk,PropertyjchứamộthìnhảnhvàPropertykchứamộtsốthực.
Bất kỳ item nào trong cấu trúc trên đều có thể được xác định bằng một đường dẫn tuyệt đối. Ví dụ đường dẫn / chỉ đến root, đường dẫn /a/d/i chỉ đến 1 Property có giátrịlàtrue.Đườngdẫntuyệtđốiluônbắtđầuvới/.
Đường dẫn tương đối chỉ ra một node hay một property từ một node đã được xác định trước. Ví dụ : với node /a trong biểu đồ trên thì đường dẫn tương đối đến propertyvớigiátrịtruelàd/i,đếnpropertycógiátrị-25là../c/h.
3. Một số API cơ bản
ToànbộRepositoryđược đạidiệnbởimộtđốitượng Repository.MộtClientkết nối tớimộtRepositorybằngcách cungcấp mộtđốitượng Credentials vàxácđịnh một Workspace cụ thể bên trong một Repository. Nếu Credentials được thông qua thì Client có thể truy cập đến một Workspace đã xác định, sau đó Client sẽ nhận một Ticket.
Vídụ:
Repositoryrepository=(Repository)java.rmi.Naming.lookup("MyRepo"); //LấyđốitượngCredentials
Credentials credentials = new SimpleCredentials("MyName",
"MyPassword".toCharArray());
BùiVĩnhPhú 64 ĐặngĐình
Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA
//LấymộtTicket
Ticket myTicket=repository.login(credentials,"MyWorkspace");
Với đối tượng Ticket, Clientcó thể truycập đến bấtkỳ một Nodehay Property nàotrongcâycủaWorkspaceđangtruycập:
//LấyNodeRoot
Noderoot=myTicket.getRootNode();
//LấymộtNodebấtkỳvớiđườngdẫntuyệtđối NodemyNode=root.getNode("a/e");
//LấymộtPropertycủamyNode
PropertymyProperty=myNode.getProperty("k"); //LấyragiátrịcủamộtProperty
ValuemyValue=mỷPoperty.getValue(); //ChuyểnđổimộtValuevềmộtkiểunàođó
doublemyDouble=myValue.getDouble();
BùiVĩnhPhú 65 ĐặngĐình
Vương
PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA