首页 > 解决方案 > Rest Api 应用程序无法连接到同一个 Kubernetes pod 中的 postgres db

问题描述

您好我收到以下错误:

上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建类路径资源 [file.xml] 中定义的名称为“entityManagerFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.service.spi.ServiceException:无法创建请求的服务 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

我有一个 kubernetes 集群,我在其中定义了一个带有两个容器的 pod,一个是 postgres db,另一个是 java rest-api 应用程序。我无法从应用程序连接到数据库。我正在尝试使用 spring 连接到 postgres db,这是我的 xml 文件配置:

<!-- JPA Transaction Manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5432/dbName" />
    <property name="username" value="postgres"/>
    <property name="password" value="postgres"/>
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.my-package.it.name.db" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <!--<property name="showSql" value="true" />-->
        </bean>
    </property>
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
</bean>

谢谢你的时间和帮助

标签: springpostgresqlkubernetes

解决方案


您应该做的是,为您的数据库和服务创建部署,该部署以该部署为目标,然后使用该服务 ping:

apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
   - port: 5432
  selector:
   app: postgres

如果您希望我在您的文件中复制它,请在您的帖子中提供。你可以查看这篇文章


推荐阅读