尝试使用Tomcat的PersistentManager将会话数据写入本地计算机上运行的Postgres数据库时,收到以下错误:
SEVERE: A SQL exception occurred org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
该应用程序本身在docker容器中运行。为了完整起见,我当前的context.xml文件是:
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Manager className="org.apache.catalina.session.PersistentManager"
distributable="true" processExpiresFrequency="6" maxIdleBackup="0" debug="99" >
<Store className="org.apache.catalina.session.JDBCStore"
driverName="org.postgresql.Driver"
connectionURL="jdbc:postgresql://localhost/admin?stringtype=unspecified"
connectionName="admin" connectionPassword="admin"
sessionAppCol="app_name" sessionDataCol="session_data" sessionIdCol="session_id"
sessionLastAccessedCol="last_access" sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions_tb" sessionValidCol="valid_session" />
</Manager>
</Context>
根据这里的建议:Postgresql:连接被拒绝。检查主机名和端口是否正确以及邮局主管正在接受TCP /
IP连接
我通过确认了netstat -aln | grep LISTEN
Postgresql正在运行并且正在正确的端口上侦听:
tcp4 0 0 127.0.0.1.5432 *.* LISTEN
tcp6 0 0 ::1.5432 *.* LISTEN
并且我的postgresql.conf(位于中usr/local/var/postgres
)具有listen_addresses =
localhost和port = 5432,它镜像了我在Pgadmin3中正在运行的服务器的主机和端口。
我怀疑问题在于Docker在VM中运行,因此我获得的本地信息可能不是全部。在网上阅读可用信息时,似乎我可能需要某种桥接网络。
但是,我承认我是该领域的新手,并且不确定如何设置它。
为什么我不能连接到本地主机:5432?
猫你的容器 /etc/hosts
$ sudo docker exec -it [container] cat /etc/hosts
对于docker网络bridge
,默认情况下,localhost
内部指向容器本身(Docker默认网桥网络)。然后,您无需5432
在容器中进行监听:
$ sudo docker exec [container] nc -v -z localhost 5432
解决方案1.如果要在配置xml中对“ localhost:5432”进行硬编码,最简单的方法是使用选项“ –net = host”创建容器:
$ sudo docker run --net=host -it ...
解决方案2. localhost
在容器内更改您的Docker主机IP
获取您的 Docker主机IP :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}'
192.168.5.1
输入您的容器:
$ sudo docker exec -it [container] /bin/bash
编辑文件/etc/hosts
以将localhost指向 docker host ip :
$ sudo vim /etc/hosts
192.168.5.1 localhost
解决方案3.修改数据库配置文件以使用别名代替localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
然后将添加DB_ALIAS
到容器的主机:
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...
我开始了一个RabbitMQ容器下面的文章:https://docs.docker.com/samples/library/rabbitmq使用图像包括管理工具 我可以通过http://localhost:8080访问管理工具 然后,我创建了这篇文章之后最基本的C#项目,以与我的本地RabbitMQ实例通信: 但不幸的是,运行时出现以下错误: 不太清楚RabbitClient为什么不能通过 有什么
我试图使用Maven将一个简单的Jersey REST api部署到beanstalk。我用RDS在我的aws中创建了一个环境。我还公开了RDS,这样我就可以通过命令行使用“mysql-h-u xxxx-p”命令连接到它。下面是我的Hibernate配置。 然而,我得到以下信息:错误: 我需要什么东西来允许连接。RDS已经显示了一个群组,该群组应该允许我的应用程序与它对话。 知道吗?当我使用本地m
问题内容: 直到最近,我还能够使用 Java web start 在 Firefox中 启动/打开 JNLP 文件。 不知道发生了什么事,突然突然启动了 JNLP 文件,出现了启动屏幕,显示 Java正在启动… ,然后什么也没有发生。甚至浏览器和 javacpl.cpl 小程序中的 Java控制台 也不会打开。 __ 尝试了所有可能性:删除了所有较旧的版本并安装了最新的JRE(Java版本“ 1.
我试图用嵌入式tomcat运行一个web应用程序,包括许多spring批处理作业和spring批处理管理。然而,当我试图运行生成的fat jar时,我得到了以下错误,spring batch或boot团队的任何人都可以帮忙吗: 添加更多信息:spring Boot版本:1.1.9。从spring.io父pom版本1.0.3发布。版本我尝试从STS以及使用mvn spring-boot:run运行它
我在我的kubernetes集群上部署了RabbitMQ服务器,我能够从浏览器访问管理用户界面。但是我的Spring启动应用程序无法连接到端口5672,我收到连接拒绝错误。如果我将我的application.yml属性从kuberntes主机替换为localhost并在我的机器上运行docker映像,同样的代码也可以工作。我不确定我做错了什么? 有人试过这种设置吗?请帮帮忙。谢谢!
我生成了一个。我的SpringMVC Maven Hibernate MySQL应用程序的war文件,该应用程序在本地主机和本地MySQL数据库上运行良好。我配置数据库的方式是通过WebAppConfig。查看应用程序的java文件。属性文件并检索适当的信息。 然后我创建了一个OpenShift帐户并部署了它。war文件。我添加了MySQL和PHPMyAdmin盒带,以便维护数据库。当我试图通过我
我创建了带有公共访问选项的DB实例(MySQL)。在DB安全组中,我为EC2实例安全组(Web服务器)打开了MySQL端口。在EC2安全组中,它允许ssh、web服务器端口。我可以从EC2实例连接DB实例。我在web服务器上部署了web应用程序,它无法与RDS实例连接。 我在本地web服务器中出现异常: canNotGetJDBCConnectionException:无法获得JDBC连接;嵌套异
我已经在tomcat服务器上安装了应用程序。在启动和加载应用程序的过程中,我有以下堆栈跟踪的错误。如何解决这个问题? apache-tomcat-7.0.47/webapps/petclinic 2016年10月27日下午12:14:36 org。阿帕奇。卡塔琳娜。果心标准上下文起始内部 严重:ServletContainerInitializer处理javax时出错。servlet。Servle