Khung máy chủ đặt phòng (REST) cho Java
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Bạn có thể tải máy chủ REST khung của chúng tôi xuống bằng cách nhân bản kho lưu trữ
git clone https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton
Giới thiệu
Đây là cách triển khai tham chiếu cho máy chủ Đặt phòng API v3 dựa trên:
- google-protobuf
- Dịch vụ web RESTful Jersey
Điều kiện tiên quyết
Yêu cầu cài đặt
Bắt đầu
- Sao chép Giao diện Proto vào tệp proto (api_v3.proto). Sửa đổi gói cho phù hợp với dự án của bạn (com.partner.mapsbooking.v3.model).
- Tạo một dự án ứng dụng web trong IDE có tên booking_server_v3, thêm tính năng hỗ trợ Maven vào dự án này.
- Đặt tệp proto của bạn trong src/main/resources,thêm các phần phụ thuộc cho thời gian chạy Jersey và vùng đệm giao thức vào tệp pom.xml của Maven:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
<jersey.version>2.23.2</jersey.version>
</properties>
-
Thực thi lệnh sau trong src/main để tự động tạo tệp nguồn cho các lớp được xác định trong tệp proto:
protoc --java_out=java resources/api_v3.proto
- Nếu triển khai chức năng danh sách chờ, hãy thực thi cả lệnh sau:
protoc --java_out=java resources/waitlist.proto
-
Bên trong src/main/java, hãy tạo một gói mới khớp với
groupId (com.partner.mapsbooking). Truy xuất mã mẫu từ kho lưu trữ:
git clone https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton
đặt các tệp trong gói của bạn, làm theo TODO để hoàn tất quá trình triển khai.
- Định cấu hình servlet bằng cách sửa đổi tệp web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>Booking Rest Server</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.partner.mapsbooking</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Booking Rest Server</servlet-name>
<url-pattern>/mapsbooking/*</url-pattern>
</servlet-mapping>
</web-app>
- Trong Run Configurations (Cấu hình chạy), hãy thiết lập cấu hình máy chủ Tomcat. Thêm tất cả các tệp jar vào thư mục /WEB_INF/lib (cấu trúc dự án -> cấu phần phần mềm -> Sau khi chọn tất cả các tệp jar, hãy nhấp chuột phải rồi chọn "Put into /WEB-INF/lib" (Đặt vào /WEB-INF/lib)).
- Chạy Tomcat để khởi động máy chủ.
Cấu trúc thư mục cuối cùng
src
|---main
|---java
|---com.partner.mapsbooking
|---rest
|---BookingService.java
|---BookingExceptionMapper.java
|---Error.java
|---authentication
|---AuthenticationService.java
|---RestAuthenticationFilter.java
|---v3.model
|---ApiV3.java
|---Waitlist.java
|---resources
|---api_v3.proto
|---waitlist.proto
|---test
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-07-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-26 UTC."],[[["\u003cp\u003eThis guide provides steps to set up a reference implementation for API v3 Booking server using google-protobuf and Jersey RESTful Web Services.\u003c/p\u003e\n"],["\u003cp\u003eIt requires Apache Maven, Protocol compiler for Java, and Apache Tomcat as prerequisites for successful implementation.\u003c/p\u003e\n"],["\u003cp\u003eYou'll need to clone a skeleton REST server, integrate provided proto interfaces, and configure your project with necessary dependencies.\u003c/p\u003e\n"],["\u003cp\u003eThe setup involves generating source files from proto definitions, implementing server logic, configuring a servlet, and deploying to a Tomcat server.\u003c/p\u003e\n"],["\u003cp\u003eThe final directory structure organizes source code, resources, and tests for a clear and maintainable project layout.\u003c/p\u003e\n"]]],["Clone the skeleton REST server using `git clone`. Copy the Proto Interface into a `api_v3.proto` file, modifying the package name. Create a `booking_server_v3` web application project with Maven support and place the proto file in `src/main/resources`. Add Jersey and protocol buffer dependencies to `pom.xml`. Generate source files using `protoc`. Retrieve sample code from the skeleton repo and place it in a new package, completing implementation based on TODOs. Configure the servlet in `web.xml`. Finally, set up and run a Tomcat server, adding all jars to the /WEB_INF/lib.\n"],null,["# Booking Server (REST) Skeleton for Java\n\nYou can download our\n[skeleton REST server](https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton/) by cloning the repo \n\n```java\ngit clone https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton\n```\n\nIntroduction\n------------\n\nThis is a reference implementation for API v3 Booking server based on:\n\n- [](/protocol-buffers/docs/overview)google-protobuf\n- [](https://jersey.github.io/)Jersey RESTful Web Services\n\n### Prerequisites\n\nRequire installations of\n\n- [Apache Maven](https://maven.apache.org/)\n- [Protocol compiler for java](https://github.com/google/protobuf)\n- [Apache Tomcat](http://tomcat.apache.org/)\n\n### Get Started\n\n1. Copy the [Proto Interface](/actions-center/verticals/local-services/e2e/reference/booking-server-api-rest/e2e-definitions/proto-interface) into a proto file (api_v3.proto). Modify the package to match your project (com.partner.mapsbooking.v3.model).\n - If implementing waitlist functionality, repeat the same steps with the [Waitlist Proto Interface](/actions-center/verticals/local-services/e2e/reference/booking-server-api-rest/e2e-definitions/proto-interface)\n2. Create a web application project in your IDE named booking_server_v3, add Maven support to this project.\n3. Place your proto file under the **src/main/resources,** add dependencies for Jersey and protocol buffers runtime to the Maven **pom.xml** file: \n\n ```java\n \u003cdependencyManagement\u003e\n \u003cdependencies\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003eorg.glassfish.jersey\u003c/groupId\u003e\n \u003cartifactId\u003ejersey-bom\u003c/artifactId\u003e\n \u003cversion\u003e${jersey.version}\u003c/version\u003e\n \u003ctype\u003epom\u003c/type\u003e\n \u003cscope\u003eimport\u003c/scope\u003e\n \u003c/dependency\u003e\n \u003c/dependencies\u003e\n \u003c/dependencyManagement\u003e\n\n \u003cdependencies\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003eorg.glassfish.jersey.containers\u003c/groupId\u003e\n \u003cartifactId\u003ejersey-container-servlet-core\u003c/artifactId\u003e\n \u003c/dependency\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003eorg.glassfish.jersey.media\u003c/groupId\u003e\n \u003cartifactId\u003ejersey-media-json-jackson\u003c/artifactId\u003e\n \u003cversion\u003e2.27\u003c/version\u003e\n \u003c/dependency\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003ecom.google.protobuf\u003c/groupId\u003e\n \u003cartifactId\u003eprotobuf-java\u003c/artifactId\u003e\n \u003cversion\u003e3.5.1\u003c/version\u003e\n \u003c/dependency\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003eio.grpc\u003c/groupId\u003e\n \u003cartifactId\u003egrpc-protobuf\u003c/artifactId\u003e\n \u003cversion\u003e1.11.0\u003c/version\u003e\n \u003c/dependency\u003e\n \u003c/dependencies\u003e\n\n \u003cproperties\u003e\n \u003cjava.version\u003e1.8\u003c/java.version\u003e\n \u003cjersey.version\u003e2.23.2\u003c/jersey.version\u003e\n \u003c/properties\u003e\n ```\n4. Execute the following command under **src/main** to auto-generate a\n source file for the classes defined in the proto file:\n\n ```java\n protoc --java_out=java resources/api_v3.proto\n ```\n - If implementing waitlist functionality, also execute the following: protoc --java_out=java resources/waitlist.proto\n5. Inside of the **src/main/java**, create a new package matching your\n groupId (com.partner.mapsbooking). Retrieve the sample code from the\n repo:\n\n ```java\n git clone https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton\n ```\n\n place the files under your package, follow the **TODOs** to complete\n your implementation.\n6. Configure your servlet by modifying the **web.xml** file: \n\n ```java\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003cweb-app xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd\"\n version=\"4.0\"\u003e\n\n \u003cservlet\u003e\n \u003cservlet-name\u003eBooking Rest Server\u003c/servlet-name\u003e\n \u003cservlet-class\u003eorg.glassfish.jersey.servlet.ServletContainer\u003c/servlet-class\u003e\n \u003cinit-param\u003e\n \u003cparam-name\u003ejersey.config.server.provider.packages\u003c/param-name\u003e\n \u003cparam-value\u003ecom.partner.mapsbooking\u003c/param-value\u003e\n \u003c/init-param\u003e\n \u003cload-on-startup\u003e1\u003c/load-on-startup\u003e\n \u003c/servlet\u003e\n\n \u003cservlet-mapping\u003e\n \u003cservlet-name\u003eBooking Rest Server\u003c/servlet-name\u003e\n \u003curl-pattern\u003e/mapsbooking/*\u003c/url-pattern\u003e\n \u003c/servlet-mapping\u003e\n \u003c/web-app\u003e\n ```\n7. In the Run Configurations, set up a Tomcat server configuration. Add all the jars to the /WEB_INF/lib directory (project structure -\\\u003e artifacts -\\\u003e After selecting all jars right click and choose \"Put into /WEB-INF/lib\").\n8. Run Tomcat to start your server.\n\n### Final Directory Structure\n\n```java\n src\n |---main\n |---java\n |---com.partner.mapsbooking\n |---rest\n |---BookingService.java\n |---BookingExceptionMapper.java\n |---Error.java\n |---authentication\n |---AuthenticationService.java\n |---RestAuthenticationFilter.java\n |---v3.model\n |---ApiV3.java\n |---Waitlist.java\n |---resources\n |---api_v3.proto\n |---waitlist.proto\n |---test\n```"]]