This project is a Java-based implementation of a hotel management system using Service-Oriented Architecture (SOA) principles. The system consists of five web services: User, Room, Payment, Booking, and Utility. Each service is designed to operate independently, providing a specific functionality to the overall system. The services communicate with each other using SOAP (Simple Object Access Protocol) protocol, enabling loose coupling and reusability. The project demonstrates the application of SOA principles, such as service autonomy, reusability, abstraction, composability, and discoverability, to build a scalable and maintainable hotel management system.
Here an user of the app can do the following operations:
- Signup for a new account
- Sign In to the existing account
- Check for available rooms
- Booking hotel room.
- Check-out from the hotel
- Make Paymens
- Get Payment Statement
- Log every payment statement.
These operations have been divided into 5 services.
- User Service : an Entity Service that is concerned with management of the user account
- Room Service: an Entity Service that provide room details, and concerned with booking and checkout
- Payment Service: a Entity Service that manages user payments.
- Booking Service: a Task Service that manages booking related operations.
- Utility Service: a Utility Service that manages logs of each successful payments.
- User: User.wsdl
- Room: RoomService.wsdl
- Payment: PaymentService.wsdl
- Booking: Booking.wsdl
- Utility: Utility.wsdl
-
Service Autonomy: Each service (User, Room, Payment, Booking, and Utility) is designed to operate independently, with its own logic and decision-making authority. For example, the Payment Service manages user payments without relying on other services to make decisions.
-
Service Reusability: The services are designed to be reusable across the application. For instance, the Room Service provides operations for managing rooms, which can be reused by the Booking Service to book a room.
-
Service Abstraction: The services expose their functionality through abstract interfaces (WSDL files), hiding the underlying implementation details. This allows for loose coupling between services and makes it easier to change or replace individual services without affecting the overall system.
-
Service Composability: The services are designed to be composed together to achieve a higher-level business capability. For example, the Booking Service composes the Room Service and Payment Service to create a booking.
-
Loose Coupling: The services are loosely coupled, meaning that they don't have tight dependencies on each other. This is evident in the way the Payment Service consumes the Room Service and User Service, but doesn't require a direct reference to their implementation.
-
Service Discoverability: The services are discoverable through their WSDL files, which provide a standardized way of describing the service interface.
This documentation provides an overview of five Java SOAP web services: User, Room, Payment, Booking, and Utility. Each service has various operations, categorized based on their functionality.
- User Service Entity Service
- Room Service (Entity Service)
- Payment Service (Entity Service)
- Booking Service (Task Service)
- Utility Service (Utility Service)
The User Service provides operations for managing user-related actions.
- getUser: Retrieves user details based on the provided user ID.
- login: Authenticates a user with the provided credentials.
- signup: Registers a new user with the provided information.
The Room Service manages room-related operations.
- getAllRoom: Retrieves a list of all available rooms.
- bookRoom: Books a specified room.
- checkoutRoom: Checks out from a specified room.
The Payment Service handles payment-related operations.
- makePayment: Processes a payment for a booking.
- Dependencies: Accesses the
addLog
operation in the Utility Service to add a log entry.
- Dependencies: Accesses the
- getStatement: Retrieves the payment statement for a user.
The Booking Service manages the booking process and integrates with other services.
- makeBooking: Creates a booking for a room.
- Dependencies: Accesses
getAllRoom
operation in the Room Service andmakePayment
operation in the Payment Service.
- Dependencies: Accesses
- getAvailableRooms: Retrieves a list of available rooms.
- Dependencies: Accesses
getAllRoom
operation in the Room Service.
- Dependencies: Accesses
- checkout: Completes the checkout process for a booking.
- Dependencies: Accesses
checkoutRoom
operation in the Room Service.
- Dependencies: Accesses
The Utility Service provides utility operations for other services.
- addLog: Adds a log entry for a specified action.
- Booking Service:
makeBooking
interacts withgetAllRoom
(Room Service) andmakePayment
(Payment Service).getAvailableRooms
interacts withgetAllRoom
(Room Service).checkout
interacts withcheckoutRoom
(Room Service).
- Payment Service:
makePayment
interacts withaddLog
(Utility Service).
This documentation provides an overview of the five Java SOAP web services, their operations, access methods, and interactions with other services. The User, Room, and Payment services are entity services handling user, room, and payment operations, respectively. The Booking service is a task service managing the booking process and interacting with the Room and Payment services. The Utility service provides a utility operation for logging actions, used by the Payment service during payment processing.