Giới thiệu Spring Roo, Phần 3: Phát triển các phần bổ sung Spring Roo

Dưới dạng mẫu đơn giản nhất của mình, m ột phần bổ sung là một thành phần phần mềm bổ sung một khả năng cụ thể cho một ứng dụng phần mềm. Ví dụ, trong hầu hết các trình duy ệt web, các phần bổ sung cung cấp sự hỗ trợ video. Một ví dụ khác là Eclipse (một IDE mã nguồn mở mà nhiều nhà phát triển Java™ sử dụng hoặc ít nhất đều biết). Hầu hết các khả năng đều do các phần bổ sung cung cấp, như hỗ trợ JUnit, hỗ trợ SVN, v.v. Tôi đang sử dụng cụm từ phần bổ sung làm m ột thuật ngữ chung dùng cho các trình cắm thêm và các phần mở rộng.

pdf28 trang | Chia sẻ: lylyngoc | Lượt xem: 1725 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Giới thiệu Spring Roo, Phần 3: Phát triển các phần bổ sung Spring Roo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Giới thiệu Spring Roo, Phần 3: Phát triển các phần bổ sung Spring Roo Kiến trúc phần bổ sung của Spring Roo Dưới dạng mẫu đơn giản nhất của mình, một phần bổ sung là một thành phần phần mềm bổ sung một khả năng cụ thể cho một ứng dụng phần mềm. Ví dụ, trong hầu hết các trình duyệt web, các phần bổ sung cung cấp sự hỗ trợ video. Một ví dụ khác là Eclipse (một IDE mã nguồn mở mà nhiều nhà phát triển Java™ sử dụng hoặc ít nhất đều biết). Hầu hết các khả năng đều do các phần bổ sung cung cấp, như hỗ trợ JUnit, hỗ trợ SVN, v.v.. Tôi đang sử dụng cụm từ phần bổ sung làm một thuật ngữ chung dùng cho các trình cắm thêm và các phần mở rộng. Spring Roo cũng có khái niệm về các phần bổ sung như sau: 1. Để cho phép các nhà phát triển bên thứ ba tạo ra các khả năng để mở rộng các khả năng của Spring Roo. 2. Để giúp Spring Roo dễ dàng bổ sung các tính năng mới. 3. Để giúp Spring Roo vẫn còn một chút nổi trội (tức là, làm giảm kích cỡ của Spring Roo). Các thành phần logic của Spring Roo Spring Roo được chia thành hai phần logic. Các thành phần cốt lõi của Spring Roo: Để cho phép phát triển phần bổ sung, Spring Roo cung cấp một tập các thành phần cốt lõi để tạo thành một môi trường thực hiện được lưu trữ trên máy chủ cho các phần bổ sung khác nhau. Các thành phần này là Classpath (Đường dẫn lớp), hỗ trợ Process Manager (Trình quản lý quy trình) và Shell (Trình vỏ). Trong đó, Process Manager hỗ trợ Project (Dự án) và File Undo (Hoàn lại tệp). Project hỗ trợ Model (Mô hình), Metadata (Siêu dữ liệu) và File Monitor (Giám sát tệp). Cuối cùng, có một thành phần Support (Hỗ trợ), được tất cả sử dụng. Hình 1 đưa ra một biểu diễn trực quan về các mối quan hệ này. Hình 1. Các thành phần cốt lõi Spring Roo Chúng ta hãy bàn về một số các mô đun cốt lõi: 1. Support (Hỗ trợ) — Mô đun org.springframework.roo.support cung cấp các lớp tiện ích phổ biến được tất cả các mô đun cốt lõi và các phần bổ sung sử dụng. Một số lớp tiện ích gồm có Assert, FileCopyUtils, XmlUtils, StringUtils, FileUtils, v.v.. Ví dụ, nếu bạn muốn sao chép nội dung của một tệp vào tệp khác, bạn có thể sử dụng tiện ích FileCopyUtils để làm việc đó cho bạn. 2. Metadata (Siêu dữ liệu) — Mô đun org.springframework.roo.metadata cung cấp một giao diện nhà cung cấp dịch vụ siêu dữ liệu và việc thực hiện gồm có đăng ký phụ thuộc và lưu trữ trong bộ nhớ đệm. 3. File monitor (Giám sát tệp) — Mô đun org.springframework.roo.file.monitor xuất bản các sự kiện sau khi phát hiện ra các thay đổi hệ thống tệp (cách thực hiện mặc định sử dụng thăm dò đĩa có mở rộng tự động). 4. File undo (Hoàn lại tệp) — Mô đun org.springframework.roo.file.undo cung cấp một phương tiện hoàn lại tệp để sử dụng theo trình quản lý quy trình. 5. Project (Dự án) — Mô đun org.springframework.roo.project trừu tượng hóa các hệ thống xây dựng dự án phía người dùng cuối điển hình như Apache Maven và Apache Ant. 6. Process manager (Trình quản lý quy trình) — Mô đun org.springframework.roo.process.manager cung cấp một sự trừu tượng hóa hệ thống tệp như-ACID gồm có khôi phục đĩa và đồng bộ hóa quá trình. 7. Classpath (Đường dẫn lớp) — Mô đun org.springframework.roo.classpath thực hiện phân tích cú pháp cây cú pháp trừu tượng và kết buộc kiểu của các đơn vị biên dịch Java và AspectJ. Các thành phần cốt lõi của Spring Roo: Spring Roo cung cấp tất cả chức năng thông qua các phần bổ sung. Các phần bổ sung cơ bản kèm theo Roo V1.1.3 là:  Add-On Creator (Bộ tạo phần bổ sung) — Phần bổ sung org.springframework.roo.addon.creator cho phép dễ dàng tạo các phần bổ sung Roo của bên thứ ba.  Backup (Sao lưu) — Phần bổ sung org.springframework.roo.addon.backup cho phép thực hiện các bản sao lưu trong một tệp ZIP bằng cách gõ backup.  Cloud Foundry (Xưởng tạo mẫu đám mây) — Phần bổ sung org.springframework.roo.addon.cloud.foundry cung cấp sự hỗ trợ cho VMware Cloud Foundry (Xưởng tạo mẫu đám mây của VMware).  Configurable (Có thể cấu hình) — Phần bổ sung org.springframework.roo.addon.configurable cung cấp sự hỗ trợ để đưa vào chú thích @Configurable của Spring thông qua một ITD (Intertype Declaration - Khai báo giữa các kiểu) của AspectJ.  Database reverse engineering (Kỹ thuật đảo ngược cơ sở dữ liệu) — Phần bổ sung org.springframework.roo.addon.dbre cung cấp sự hỗ trợ cho kỹ thuật đảo ngược gia tăng của cơ sở dữ liệu hiện có.  Data on Demand (Dữ liệu theo yêu cầu) — Phần bổ sung org.springframework.roo.addon.dod cung cấp sự hỗ trợ để tạo tự động dữ liệu ví dụ mẫu thường dùng cho các bài kiểm tra tích hợp.  Email (Thư điện tử) — Phần bổ sung org.springframework.roo.addon.email cung cấp sự hỗ trợ để tích hợp và cấu hình hỗ trợ thư điện tử của Spring trong dự án đích.  Entity (Thực thể) — Phần bổ sung org.springframework.roo.addon.entity cung cấp sự hỗ trợ rộng rãi để bảo trì tự động các lớp @Entity của Java Persistence API (API Tồn tại lâu bền của Java).  Dynamic Finder (Bộ dò tìm động) — Phần bổ sung org.springframework.roo.addon.finder tạo ra các bộ dò tìm ngôn ngữ truy vấn JPA tương thích hoàn toàn với mã an toàn-kiểu.  Git — Phần bổ sung org.springframework.roo.addon.git cung cấp sự hỗ trợ để tích hợp GIT trong dự án. Mỗi lệnh được thực hiện thành công sẽ được cam kết tự động với một kho lưu trữ GIT cục bộ.  GWT (Bộ công cụ Web của Google) — Phần bổ sung org.springframework.roo.addon.gwt cung cấp sự hỗ trợ để dựng giao diện người dùng (UI) bằng cách sử dụng GWT (Google Web Toolkit).  JavaBean — Phần bổ sung org.springframework.roo.addon.javabean tự động duy trì các getter/các setter của JavaBean cho các lớp với một chú thích @RooJavaBean.  JDBC (Kết nối cơ sở dữ liệu Java) — Phần bổ sung org.springframework.roo.addon.jdbc gói gọn việc truy cập tuân thủ-OSGi với các trình điều khiển JDBC (Java DataBase Connectivity) được phân phối trong các bó khác nhau (chủ yếu được các phần bổ sung khác sử dụng).  JMS (Hệ thống thông báo Java) — Phần bổ sung org.springframework.roo.addon.jms cung cấp sự hỗ trợ để cấu hình các thiết lập JMS (Java Messaging System) trong dự án đích.  JPA (API tồn tại lâu bền của Java) — Phần bổ sung org.springframework.roo.addon.jpa cài đặt một trình cung cấp JPA cụ thể và thiết lập JDBC cho phù hợp.  JSON (Ký pháp đối tượng JavaScript) — Phần bổ sung org.springframework.roo.addon.json bổ sung các phương thức tuần tự hóa và không tuần tự hóa có liên quan đến JSON cho các POJO (Plain old Java object – Đối tượng Java bình thường).  Logging (Ghi nhật ký) — Phần bổ sung org.springframework.roo.addon.logging thiết lập Log4j, gồm có cấu hình mức-ghi nhật ký dựa vào-lệnh.  Pluralization (Số nhiều) — Phần bổ sung org.springframework.roo.addon.plural cung cấp số nhiều của các danh từ (chủ yếu được các phần bổ sung khác sử dụng).  Property Editor (Trình soạn thảo đặc tính) — Phần bổ sung org.springframework.roo.addon.property.editor quản lý các trình soạn thảo đặc tính, khi Spring MVC (Model-View-Controller – Bộ điều khiển Khung nhìn-Mô hình) yêu cầu.  Property File (Tệp đặc tính) — Phần bổ sung org.springframework.roo.addon.propfiles cung cấp sự hỗ trợ để quản lý các tệp đặc tính trong dự án đích.  RooBot Client (Máy khách RooBot) — Phần bổ sung org.springframework.roo.addon.roobot.client cung cấp sự hỗ trợ để quản lý phần bổ sung thông qua máy chủ RooBot.  Security (Bảo mật) — Phần bổ sung org.springframework.roo.addon.security thiết lập Spring Security, gồm các trang đăng nhập, các bộ lọc và các phụ thuộc.  Serializable (Có thể tuần tự hóa) — Phần bổ sung org.springframework.roo.addon.serializable bổ sung sự hỗ trợ java.io.Serializable (chẳng hạn như bảo trì UID – Mã định danh người dùng) cho các kiểu Java cần thiết.  Solr cung cấp sự hỗ trợ để cấu hình và tích hợp các tính năng của Apache Solr trong dự án đích — Phần bổ sung org.springframework.roo.addon.solr cung cấp sự hỗ trợ để cấu hình và tích hợp các tính năng của Apache Solr trong dự án đích.  Integration Test (Kiểm tra tích hợp) — Phần bổ sung org.springframework.roo.addon.test tạo ra các bài kiểm tra tích hợp JUnit cho các thực thể của dự án.  ToString — Phần bổ sung org.springframework.roo.addon.tostring tạo ra một phương thức toString() hợp lệ cho bất kỳ lớp nào có chú thích @RooToString.  WebFlow — Phần bổ sung org.springframework.roo.addon.web.flow cung cấp sự hỗ trợ để cấu hình và tích hợp các tính năng Spring Web Flow (Luồng Web Spring) trong dự án đích.  Web MVC Controller (Bộ điều khiển MVC Web) — Phần bổ sung org.springframework.roo.addon.web.mvc.controller cung cấp sự hỗ trợ cho cấu hình và tích hợp các bộ điều khiển MVC của Spring trong dự án đích.  Web MVC Embedded (Web MVC được nhúng) — Phần bổ sung org.springframework.roo.addon.web.mvc.embedded cung cấp phần mở rộng cho phần bổ sung MVC, cho phép bổ sung các tính năng nhúng như các bản đồ, các đoạn video, v.v.. vào các trang web.  Web MVC JSP — Phần bổ sung org.springframework.roo.addon.web.mvc.jsp cấu hình và tích hợp các tính năng JSP MVC của Spring trong dự án đích.  Selenium (Selen) — Phần bổ sung org.springframework.roo.addon.web.selenium cung cấp cấu hình và tích hợp các bài kiểm tra web Selen trong dự án đích. Bây giờ chúng ta đã xem xét các thành phần cốt lõi của Spring Roo và các phần bổ sung cơ bản do Spring Roo cung cấp, hãy viết các phần bổ sung riêng của chúng ta. Về đầu trang Môi trường thời gian chạy OSGi Spring Roo được dựa trên OSGi, là lý tưởng cho kiến trúc phần bổ sung của Roo. OSGi cung cấp một cơ sở hạ tầng rất tốt để phát triển các ứng dụng hướng dịch vụ nhúng và mô đun. Trình vỏ Roo sử dụng Apache Felix làm khung công tác thời gian chạy OSGi của mình cùng với SCR (Service Component Runtime - Thời gian chạy của thành phần dịch vụ) để quản lý thành phần và OBR (Repository Bundle OSGi – OSGi gói kho lưu trữ) cho độ phân giải gói. Có sẵn các lệnh OSGi khác nhau trong trình vỏ Roo, mà bạn có thể xem chúng bằng cách gõ lệnh help osgi (Trợ giúp osgi), như trong Liệt kê 1. Liệt kê 1. Lệnh help của Roo với OSGi roo> help osgi * osgi find - Finds bundles by name * osgi framework command - Passes a command directly through to the Felix shell infrastructure * osgi headers - Display headers for a specific bundle * osgi install - Installs a bundle JAR from a given URL * osgi log - Displays the OSGi log information * osgi obr deploy - Deploys a specific OSGi Bundle Repository (OBR) bundle * osgi obr info - Displays information on a specific OSGi Bundle Repository (OBR) bundle * osgi obr list - Lists all available bundles from the OSGi Bundle Repository (OBR) system * osgi obr start - Starts a specific OSGi Bundle Repository (OBR) bundle * osgi obr url add - Adds a new OSGi Bundle Repository (OBR) repository file URL * osgi obr url list - Lists the currently-configured OSGi Bundle Repository (OBR) repository file URLs * osgi obr url refresh - Refreshes an existing OSGi Bundle Repository (OBR) repository file URL * osgi obr url remove - Removes an existing OSGi Bundle Repository (OBR) repository file URL * osgi ps - Displays OSGi bundle information * osgi resolve - Resolves a specific bundle ID * osgi scr config - Lists the current SCR configuration * osgi scr disable - Disables a specific SCR-defined component * osgi scr enable - Enables a specific SCR-defined component * osgi scr info - Lists information about a specific SCR-defined component * osgi scr list - Lists all SCR-defined components * osgi start - Starts a bundle JAR from a given URL * osgi uninstall - Uninstalls a specific bundle * osgi update - Updates a specific bundle * osgi version - Displays OSGi framework version Về đầu trang Lệnh tạo phần bổ sung của Spring Roo Spring Roo được gói chung cùng với các lệnh tạo phần bổ sung để tạo ra các kiểu của các phần bổ sung khác nhau. Add-on Creator, trưng ra nhiều lệnh addon create (tạo phần bổ sung), cũng là một phần bổ sung Roo. Roo hiện hỗ trợ bốn kiểu phần bổ sung: 1. Phần bổ sung quốc tế — Phần bổ sung này hỗ trợ các bản dịch ngôn ngữ bổ sung cho các ứng dụng Spring MVC được dựng lên của Roo (ví dụ, bản dịch bổ sung cho ngôn ngữ Hin-đi). 2. Phần bổ sung đơn giản — Phần bổ sung đơn giản hỗ trợ các bổ sung nhỏ cho các dự án phụ thuộc hoặc cấu hình dự án hoặc cả hai (ví dụ, thực hiện một số sửa đổi pom.xml của maven giống như việc bổ sung một số tệp lưu trữ Java (JAR) hoặc các trình cắm thêm Maven). 3. Phần bổ sung nâng cao — Phần bổ sung này làm công việc nặng nhọc và được sử dụng để xây dựng một phần bổ sung Spring Roo có đủ tính năng, có yêu cầu tạo mã Java (ví dụ, xây dựng một phần bổ sung có thể viết các phương thức equals (bằng nhau) và hashcode (mã băm) cho đối tượng miền của bạn). Đã có một phần bổ sung cộng đồng cho các chức năng này. 4. Phần bổ sung trình bao bọc — Phần bổ sung này bao bọc một tạo phẩm Maven để tạo ra một gói tuân thủ-OSGi. Phần bổ sung này cần thiết khi một phần bổ sung yêu cầu một phụ thuộc để hoàn thành chức năng của nó. Ví dụ, phần bổ sung kỹ thuật đảo ngược cơ sở dữ liệu của Spring Roo yêu cầu trình điều khiển JDBC Postgres để hoàn thành nhiệm vụ của mình, vì vậy bạn sẽ bọc trình điều khiển JDBC Postgres nhờ sử dụng phần bổ sung này. Các phần bổ sung này tạo ra các lệnh để giảm nhẹ việc phát triển phần bổ sung Roo bằng cách tạo các phần bổ sung mới như sau: httppgp:// Phiên bản 1.1 của Spring Roo đã giới thiệu Pretty Good Privacy (PGP - Tính riêng tư rất tốt), cho phép những người dùng xác định đã tin vào các nhà phát triển nào để ký phần mềm sẽ được tải về và kích hoạt trong trình vỏ Roo. Trong thực tế, hiện nay mọi bản phát hành của Roo tự được ký theo PGP. Một trình xử lý giao thức mới có tên là httppgp:// đã được giới thiệu trong Roo để cho biết rằng một URL cũng có sẵn chữ ký được gỡ bỏ lớp bảo vệ PGP. Điều này cung cấp một biểu mẫu bảo mật mở để giúp bảo vệ những người dùng khỏi các bản tải mã độc. Những tiêu chuẩn này cũng cho phép sử dụng các công cụ PHP độc lập để kiểm tra độc lập các hoạt động của Roo.  Đã tích hợp với việc kiểm soát mã nguồn SVN (Subversion - Phiên bản con) của Google Code (Mã Google).  Đã lưu trong một kho lưu trữ Maven công khai được tạo ra như là một phần của dự án mã Google.  Tương thích với RooBot, một dịch vụ lưu trữ trên VMware để tạo chỉ mục nội dung quan trọng trong các tệp OBR công khai của Roo. Các tệp OBR là một biểu diễn siêu dữ liệu gói dựa trên XML. Để phù hợp với RooBot, các phần bổ sung sẽ là: 1. Tuân thủ-OSGi. 2. Các tạo phẩm do PGP ký với các khóa công khai. 3. Đã đăng ký thông qua giao thức httppgp://. Khi sử dụng lệnh tạo phần bổ sung addon create của Roo, bạn sẽ nhận được tất cả các tính năng đã đề cập ở trên, được cấu hình tự động cho các phần bổ sung của bạn. Điều này chắc chắn làm giảm thời gian tạo và xuất bản các phần bổ sung ra thế giới bên ngoài. Trước khi chúng ta bắt đầu viết các phần bổ sung, hãy chắc chắn rằng bạn có một môi trường chức năng của Spring Roo. Có thể tìm thấy các hướng dẫn để cài đặt Spring Roo trong Phần 1 của loạt bài này. Về đầu trang Tôi muốn hỗ trợ ngôn ngữ Hin-đi (tạo phần bổ sung i18n) Khi bạn tạo một ứng dụng web dựa trên MVC của Spring bằng cách sử dụng Spring Roo, bạn có thể thêm sự hỗ trợ cho các ngôn ngữ khác nhau bằng lệnh web mvc language (ngôn ngữ mvc web). Spring Roo hỗ trợ tiếng Anh, tiếng Đức, tiếng Tây Ban Nha, Ý, Hà Lan và Thụy Điển, có thể dùng ngay được. Hỗ trợ quốc tế được cung cấp bởi phần bổ sung Web MVC JSP (Web MVC JavaServer Pages - Các trang JavaServer của MVC web), được kích hoạt chỉ sau khi bạn có các tệp JSPX trong thư mục webapp của mình. Các tệp JSPX do một lệnh của trình điều khiển tạo ra và lệnh này có thể chuyển đổi một ứng dụng dựa vào JAR đơn giản thành một ứng dụng web MVC của Spring. Là một người Ấn Độ, tôi muốn bổ sung sự hỗ trợ tiếng Hin-đi trong ứng dụng web của mình. Spring Roo cung cấp một lệnh addon create i18n, trong đó cung cấp một phần mở rộng cho lệnh web mvc install language (ngôn ngữ cài đặt mvc web) để bổ sung sự hỗ trợ cho một ngôn ngữ mới như Hin-đi. Điều duy nhất mà nó đòi hỏi là bản dịch của tệp messages.properties theo ngôn ngữ dự kiến. Khi Spring Roo tạo ra một ứng dụng web MVC của Spring, nó tạo ra hai tệp đặc tính: application.properties và messages.properties. Tệp application.properties chứa các thuộc tính đặc trưng-ứng dụng, như tên của ứng dụng. Tệp messages.properties chứa các đặc tính, không đặc trưng cho bất kỳ ứng dụng nào, như thông báo "Bạn có chắc chắn muốn xóa mục này không?" khi bạn nhấn vào nút xóa hoặc các thông báo như đăng nhập, đăng xuất, v.v.. Vì thế, khi bạn viết một phần bổ sung i18n, bạn phải cung cấp bản dịch cho tệp messages.properties. Bây giờ chúng ta đã bàn về sự hỗ trợ quốc tế mặc định trong Spring Roo, chúng ta hãy viết một phần bổ sung i18n để có thể bổ sung sự hỗ trợ ngôn ngữ Hin-đi. Tôi sẽ hướng dẫn cách bạn có thể thiết lập một dự án dựa theo mã của Google, viết một phần bổ sung bằng cách sử dụng lệnh, xuất bản và phát hành nó ra thế giới bên ngoài, cuối cùng đăng ký với dịch vụ RooBot. Việc đăng ký với dịch vụ RooBot rất quan trọng vì điều này sẽ cho phép RooBot tạo chỉ mục phần bổ sung của bạn và hiển thị nó khi các nhà phát triển khác tìm kiếm bằng cách sử dụng lệnh addon search (tìm kiếm phần bổ sung). Thiết lập dự án Tài liệu hướng dẫn Spring Roo giải thích rõ việc thiết lập dự án của bạn và kho lưu trữ Maven dựa trên mã Google, vì thế tôi sẽ không nhắc lại nó nữa. Tôi chỉ lưu ý rằng tôi sẽ sử dụng tên dự án là "roo-hind-addon." Tạo một phần bổ sung i18n Một khi bạn đã thiết lập dự án, bạn sẽ có một thư mục rỗng có tên là roo-hindi-addon (phần bổ sung-tiếng hin đi-Roo). Đi vào thư mục đó và gõ lệnh roo. Khi ở trong trình vỏ, gõ lệnh addon create i18n. Nếu ấn phím tab, bạn sẽ thấy rằng lệnh này có bảy thuộc tính. Trong số bảy thuộc tính này, ba thuộc tính là bắt buộc: topLevelPackage (gói mức cao nhất của phần bổ sung mới), locale (các chữ viết tắt tên địa phương như "it" cho nước Ý và messageBundle (đường dẫn đủ điều kiện đến tệp message_xx.properties, ở đây xx là tên địa phương). Bốn thuộc tính khác là tùy chọn: language (tên đầy đủ của ngôn ngữ), flagGraphic (đường dẫn đầy đủ đến tệp xx.png, ở đây xx là tên lá cờ), description (mô tả của phần bổ sung) và projectName (tên của dự án (nếu không được cung cấp, hãy sử dụng tên gói mức cao nhất)). Tôi sẽ đề nghị bạn sử dụng thuộc tính projectName và bảo đảm giá trị của nó là tên của dự án được lưu trữ dựa theo mã Google. Vì vậy, trong trường hợp của chúng ta, projectName sẽ là roo-hindi-addon. Trong số các thuộc tính đã đề cập ở trên, quan trọng nhất là messageBundle, chỉ rõ tệp messages.properties đã dịch. Để dịch tệp messages.properties sang ngôn ngữ Hin-đi, tùy chọn dễ nhất là sử dụng một dịch vụ như Google translate, (Phiên dịch của Google), chuyển đổi mỗi đặc tính theo từng cái một, sau đó viết chúng vào tệp messages_hi.properties. Tuy nhiên, dịch vụ này không làm việc trong trường hợp của chúng ta vì các tệp đặc tính Java sử dụng tiêu chuẩn mã hóa ISO-8859-1, không hỗ trợ các ký tự Hin-đi. Để khắc phục vấn đề này, tôi sử dụng một trình cắm thêm Eclipse tên là Eclipse ResourceBundle Editor (trình soạn thảo gói tài nguyên Eclipse), cho phép bạn chuyển đổi và tạo ra các gói tài nguyên cho các ngôn ngữ khác nhau. Bạn có thể cài đặt nó bằng cách sử dụng trang web cập nhật Việc chuyển đổi tệp messages.properties sang tệp messages_hi.properties không nằm trong phạm vi của bài này. Trình cắm thêm Editor ResourceBundle dễ sử dụng. Xin lưu ý là nếu các ký tự ngôn ngữ được hỗ trợ, thì không cần sử dụng trình soạn thảo ResourceBundle nữa. Tệp messages_hi.properties sẽ trông giống như Liệt kê 2. Liệt kê 2. Tệp messages_hi.properties ví dụ mẫu