A comprehensive 3-tier enterprise application for managing real estate properties, built with modern Jakarta EE technologies.
This system follows a classic 3-tier architecture pattern:
- Technology: JavaServer Faces (JSF) with XHTML views
- Features: User authentication, property search, management interfaces
- Components: Managed Beans, Facelets templates, CSS styling
- Technology: Enterprise JavaBeans (EJB) with stateless session beans
- Features: Transaction management, business logic, validation
- Components: PropertyEJB, PropertyManagerEJB, UserEJB, AllocationEJB
- Technology: Jakarta Persistence API (JPA) with EclipseLink
- Database: MySQL with relational schema
- Features: ORM mapping, entity relationships, data validation
- Property Types: Support for both rental and sale properties
- Search & Filter: Advanced search by location, price, bedrooms, etc.
- CRUD Operations: Complete create, read, update, delete functionality
- Address Management: Integrated address system with validation
- Authentication: Secure login system with password hashing
- Registration: User signup with email verification
- Password Recovery: Email-based password reset functionality
- Session Management: Secure session handling with filters
- Manager Profiles: Comprehensive property manager information
- Property Allocation: Assign properties to managers
- Search Capabilities: Find managers by name, email, or properties
- Performance Tracking: Monitor manager workload and assignments
- Core Language: Java 17+
- Enterprise Framework: Jakarta EE 10
- Web Framework: JavaServer Faces (JSF) 4.0
- Persistence: Jakarta Persistence API (JPA) 3.0
- Business Logic: Enterprise JavaBeans (EJB) 4.0
- Database: MySQL 8.0+
- Build Tool: Apache Maven
- Application Server: GlassFish/Payara
- ORM Provider: EclipseLink
- Property: Base entity with inheritance (RentProperty, SaleProperty)
- PropertyManager: Property manager information and assignments
- User: System users with authentication
- Allocation: Property-to-manager assignments
- Address: Comprehensive address management
- One-to-Many: PropertyManager ↔ Allocation
- Many-to-One: Allocation ↔ Property, Allocation ↔ PropertyManager
- One-to-One: Property ↔ Address
- Inheritance: Property → RentProperty, SaleProperty
- Java 17 or higher
- MySQL 8.0 or higher
- Maven 3.6 or higher
- Jakarta EE compatible application server (GlassFish/Payara recommended)
-
Clone the repository
git clone <repository-url> cd Property-Management-System
-
Database Setup
CREATE DATABASE real_estate_management; CREATE USER 'realestate'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON real_estate_management.* TO 'realestate'@'localhost';
-
Configure Database Connection
- Update
src/conf/persistence.xmlwith your database credentials - Configure JNDI datasource in your application server
- Update
-
Build and Deploy
mvn clean install
- Deploy the resulting WAR file to your application server
-
Access the Application
- Open browser to:
http://localhost:8080/Property-Management-System/ - Default login: Register a new account or contact administrator
- Open browser to:
Update src/conf/persistence.xml:
<jta-data-source>jdbc/RealEstateManagement</jta-data-source>- Configure JNDI datasource:
jdbc/RealEstateManagement - Set up mail session for email functionality
- Configure security realms if needed
- Dashboard: Overview of properties and managers
- Property Listings: Browse and search properties
- Manager Portal: Property manager dashboard and assignments
- Admin Panel: System administration and user management
- Property search by location, price range, bedrooms/bathrooms
- Manager search by name, email, or property count
- Advanced filtering for furnished/unfurnished rentals
- Property type filtering (House, Apartment, Townhouse, etc.)
- Session-based authentication
- Role-based access control
- Email verification for registration
- Secure password recovery
src/
├── main/
│ ├── java/
│ │ └── realestatemanagement/
│ │ ├── model/ # JPA Entities
│ │ ├── ejb/ # Business Logic
│ │ ├── Beans/ # JSF Managed Beans
│ │ └── jsf/ # JSF Components
│ └── resources/
│ └── conf/
│ └── persistence.xml # JPA Configuration
└── web/
├── WEB-INF/
│ └── web.xml # Web Application Configuration
└── *.xhtml # JSF Views
Built with Jakarta EE technologies