diff --git a/README.md b/README.md
index 7b82b74..9a06226 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
## **TUSC - The URL Shortener Company**
-[![buddy pipeline](https://app.buddy.works/amitnandileo-2/urlshortener/pipelines/pipeline/483649/badge.svg?token=fb16d4ceb25aaee899aeebeb8f9d57239dd800defc2afb65a0176c36d32bd464 "buddy pipeline")](https://app.buddy.works/amitnandileo-2/urlshortener/pipelines/pipeline/483649)
+
+[![buddy pipeline](https://app.buddy.works/amitnandileo-2/urlshortener/pipelines/pipeline/483649/badge.svg?token=fb16d4ceb25aaee899aeebeb8f9d57239dd800defc2afb65a0176c36d32bd464)](https://app.buddy.works/amitnandileo-2/urlshortener/pipelines/pipeline/483649)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)[![GitHub last commit](https://img.shields.io/github/last-commit/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/commits/main)[![GitHub issues](https://img.shields.io/github/issues/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/issues)[![GitHub pull requests](https://img.shields.io/github/issues-pr/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/pulls)[![GitHub contributors](https://img.shields.io/github/contributors/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/graphs/contributors)
[![Twitter](https://img.shields.io/twitter/url/https/github.com/yourusername/your-repo.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Faamitn%2FURLShortener&text=Check%20out%20this%20awesome%20URL%20Shortener%20and%20Bio%20Page%20Application&via=yourtwitterhandle)
@@ -45,7 +46,6 @@ Before you begin, ensure you have the following installed:
* MySQL
* Your favorite IDE (IntelliJ, Eclipse, etc.)
-
### Local Setup
1. Clone the repository:
@@ -75,7 +75,6 @@ Before you begin, ensure you have the following installed:
5. Access the application at http://localhost:8080
-
### Deployment
1. **Build a deployable WAR:**
@@ -166,24 +165,53 @@ To deploy the URL Shortener application on your cloud environment, follow the st
4. **Customizing Docker Compose Configuration:**
-In the **docker-compose.yml** file, you can customize the build source for the Shortener service:
+ In the **docker-compose.yml** file, you can customize the build source for the Shortener service:
-```plaintext
- #Build from docker hub image .Comment/Uncomment Below
- image: nmpl/shortener:latest
+ ```plaintext
+ #Build from docker hub image .Comment/Uncomment Below
+ image: nmpl/shortener:latest
+
+ #Build from local Dockerfile.Comment/Uncomment Below
+ # build:
+ # context: .
+ # dockerfile: Dockerfilekerfile
+ ```
- #Build from local Dockerfile.Comment/Uncomment Below
- # build:
- # context: .
- # dockerfile: Dockerfilekerfile
-```
+ Comment or uncomment the relevant lines based on whether you want to use the pre-built image from Docker Hub or build from the local Dockerfile.
+
+
+5. **Deploy Using K8s**
+
+* **Setup Kubernetes Deployment and Service:**
+
+ ```plaintext
+ kubectl apply -f shortener-deployment.yaml
+ kubectl apply -f shortener-service.yaml
+ ```
+
+* **Use the following command to monitor the deployment:**
+
+ ```plaintext
+ kubectl get pods
+ ```
+
+Wait until the pod is in the "Running" state.
+
+* **Access the Application**
+
+ Depending on your Kubernetes setup, you might need to get the external IP of the service:
+
+ ```plaintext
+ kubectl get service shortener-service
+ ```
+
+ Access your application using the provided external IP.
-Comment or uncomment the relevant lines based on whether you want to use the pre-built image from Docker Hub or build from the local Dockerfile.
### App Health
-* Check application status from the /monitoring page example http://localhost:8080/monitoring
+* Check application status from the /monitoring page example http://localhost:8080/monitoring
### Usage Cases
diff --git a/logs/shortener.log b/logs/shortener.log
index af6f2e0..50bf72d 100644
--- a/logs/shortener.log
+++ b/logs/shortener.log
@@ -5429,3 +5429,229 @@ java.net.ConnectException: Connection refused: getsockopt
01:22:25.392 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default'
01:22:25.395 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
01:22:25.861 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
+19:03:39.341 [main] INFO c.b.s.UrlShortenerApplication - Starting UrlShortenerApplication using Java 21.0.2 with PID 26100 (C:\Users\bigwiz\IdeaProjects\URLShortener\target\classes started by bigwiz in C:\Users\bigwiz\IdeaProjects\URLShortener)
+19:03:39.342 [main] INFO c.b.s.UrlShortenerApplication - No active profile set, falling back to 1 default profile: "default"
+19:03:39.983 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode.
+19:03:40.071 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 83 ms. Found 9 JPA repository interfaces.
+19:03:40.492 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8080 (http)
+19:03:40.498 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
+19:03:40.499 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
+19:03:40.499 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.17]
+19:03:40.540 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+19:03:40.540 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1174 ms
+19:03:40.708 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
+19:03:41.775 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
+com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
+
+The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
+ at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
+ at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
+ at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815)
+ at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:438)
+ at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
+ at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189)
+ at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
+ at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
+ at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
+ at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
+ at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
+ at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:100)
+ at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
+ at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160)
+ at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118)
+ at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
+ at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
+ at org.springframework.boot.jdbc.EmbeddedDatabaseConnection.isEmbedded(EmbeddedDatabaseConnection.java:168)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateDefaultDdlAutoProvider.getDefaultDdlAuto(HibernateDefaultDdlAutoProvider.java:42)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration.lambda$getVendorProperties$1(HibernateJpaConfiguration.java:142)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings.getDdlAuto(HibernateSettings.java:41)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties.determineDdlAuto(HibernateProperties.java:118)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties.getAdditionalProperties(HibernateProperties.java:87)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties.determineHibernateProperties(HibernateProperties.java:80)
+ at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration.getVendorProperties(HibernateJpaConfiguration.java:143)
+ at org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.entityManagerFactory(JpaBaseConfiguration.java:132)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
+ at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
+ at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:643)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+ at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1232)
+ at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
+ at com.bitmutex.shortener.UrlShortenerApplication.main(UrlShortenerApplication.java:12)
+Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
+
+The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
+ at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
+ at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
+ at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:104)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149)
+ at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)
+ at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:582)
+ at com.mysql.cj.protocol.a.NativeProtocol.readServerCapabilities(NativeProtocol.java:537)
+ at com.mysql.cj.protocol.a.NativeProtocol.beforeHandshake(NativeProtocol.java:425)
+ at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1426)
+ at com.mysql.cj.NativeSession.connect(NativeSession.java:133)
+ at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:935)
+ at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:805)
+ ... 46 common frames omitted
+Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
+ at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:67)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
+ at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
+ ... 52 common frames omitted
+19:03:41.801 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default]
+19:03:41.832 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.4.1.Final
+19:03:41.851 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled
+19:03:41.976 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer
+19:03:41.990 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
+19:03:42.993 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
+com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
+
+The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
+ at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
+ at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
+ at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815)
+ at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:438)
+ at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
+ at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189)
+ at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
+ at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
+ at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
+ at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
+ at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
+ at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:100)
+ at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
+ at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:428)
+ at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:61)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
+ at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:129)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
+ at org.hibernate.boot.model.relational.Database.(Database.java:45)
+ at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223)
+ at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:191)
+ at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170)
+ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432)
+ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503)
+ at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
+ at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
+ at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
+ at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
+ at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+ at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1232)
+ at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
+ at com.bitmutex.shortener.UrlShortenerApplication.main(UrlShortenerApplication.java:12)
+Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
+
+The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
+ at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
+ at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
+ at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:104)
+ at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149)
+ at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)
+ at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:582)
+ at com.mysql.cj.protocol.a.NativeProtocol.readServerCapabilities(NativeProtocol.java:537)
+ at com.mysql.cj.protocol.a.NativeProtocol.beforeHandshake(NativeProtocol.java:425)
+ at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1426)
+ at com.mysql.cj.NativeSession.connect(NativeSession.java:133)
+ at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:935)
+ at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:805)
+ ... 49 common frames omitted
+Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
+ at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:67)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
+ at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
+ at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
+ ... 55 common frames omitted
+19:03:42.994 [main] WARN o.h.e.j.e.i.JdbcEnvironmentInitiator - HHH000342: Could not obtain connection to query metadata
+java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null
+ at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:116)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107)
+ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
+ at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:129)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
+ at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
+ at org.hibernate.boot.model.relational.Database.(Database.java:45)
+ at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223)
+ at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:191)
+ at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170)
+ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432)
+ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503)
+ at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
+ at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
+ at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
+ at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
+ at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+ at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1232)
+ at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
+ at com.bitmutex.shortener.UrlShortenerApplication.main(UrlShortenerApplication.java:12)
+19:03:43.002 [main] WARN org.hibernate.orm.deprecation - HHH90000025: MySQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
+19:03:43.157 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead
+19:03:43.530 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
+19:03:43.532 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead
+19:03:43.534 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [jakarta.persistence.schema-generation.scripts.create-target], use [javax.persistence.schema-generation.scripts.create-target] instead
+19:03:43.544 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default'
+19:03:43.761 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used.
+19:03:44.484 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 13 endpoint(s) beneath base path '/actuator'
+19:03:44.595 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
+19:03:44.746 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@31daef26, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1f59def1, org.springframework.security.web.context.SecurityContextHolderFilter@76a756f, org.springframework.security.web.header.HeaderWriterFilter@1236926e, org.springframework.web.filter.CorsFilter@707c1e41, org.springframework.security.web.authentication.logout.LogoutFilter@455805b3, org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter@21faf535, org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter@4ba25170, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@699cb1a3, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@534bd131, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e5bb7aa, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@64b3ba13, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6ed3fecb, org.springframework.security.web.session.SessionManagementFilter@242b48ef, org.springframework.security.web.access.ExceptionTranslationFilter@3e1d79ad, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@495b3b23]
+19:03:45.110 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
+19:03:45.114 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default'
diff --git a/out/artifacts/shortener_jar/shortener.jar b/out/artifacts/shortener_jar/shortener.jar
index ea87303..90664cb 100644
Binary files a/out/artifacts/shortener_jar/shortener.jar and b/out/artifacts/shortener_jar/shortener.jar differ
diff --git a/shortener-deployment.yaml b/shortener-deployment.yaml
new file mode 100644
index 0000000..ec1e253
--- /dev/null
+++ b/shortener-deployment.yaml
@@ -0,0 +1,21 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: shortener-deployment
+ labels:
+ app: shortener
+spec:
+ replicas: 3 # Adjust as needed
+ selector:
+ matchLabels:
+ app: shortener
+ template:
+ metadata:
+ labels:
+ app: shortener
+ spec:
+ containers:
+ - name: shortener
+ image: nmpl/shortener:latest
+ ports:
+ - containerPort: 8080
\ No newline at end of file
diff --git a/shortener-service.yaml b/shortener-service.yaml
new file mode 100644
index 0000000..0382b04
--- /dev/null
+++ b/shortener-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: shortener-service
+spec:
+ selector:
+ app: shortener
+ ports:
+ - protocol: TCP
+ port: 8080
+ targetPort: 8080
+ type: LoadBalancer
\ No newline at end of file