gpt4 book ai didi

tomcat - 无法连接到 Derby 网络服务器,不清楚是什么问题

转载 作者:行者123 更新时间:2023-11-28 22:17:00 24 4
gpt4 key购买 nike

我可以使用“ij”正常连接,但是当我尝试部署我的 warfile 时,我似乎无法获得正确的连接。我怀疑它与 derbyclient.jar 有关,但我已将其添加到我的类路径中,因此 JVM 应该没有任何问题可以找到它。我已经在这上面花了几天时间,我想是时候在这里提问了。 PS:我不熟悉在远程服务器上部署(它在我的本地服务器上运行良好)。 catalina.out 日志文件如下。真正奇怪的是 webapp 部分工作。它能够从数据库中提取一些(但不是全部)所需的数据,即使它说它没有连接。

Caused by: ERROR 08001: java.net.ConnectException : Error connecting to server localhost on port 64,414 with message Connection refused (Connection refused).
at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
at org.apache.derby.client.am.ClientConnection.<init>(Unknown Source)
at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(Unknown Source)
... 69 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:271)
at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 74 more

我正在使用 Tomcat 8.5、Derby 10.13 并在与 tomcat 相同的远程计算机上将 Derby 作为 NetworkServer 运行。报错不多说了,实在是搞不清楚是什么问题。我猜它找不到 c derby jar 文件,因为其中一些文件显示“(未知来源”,(但这只是一个猜测)。我确实读过一些其他帖子,这些帖子讨论了将 derbyclient.jar 放入 tomcats lib 文件夹,但我什至不确定这是否是问题所在。

我使用以下教程安装 tomcat:digitial Oceans tomcat installation guide我不太确定设置在远程机器上的工作方式。有很多关于设置权限的内容,并没有真正解释为什么要设置这些权限。为什么不为我的用户安装 tomcat?创建“tomcat”用户组有什么意义?它给问题增加了很多复杂性,却没有明确解释我们为什么这样做以及后果是什么。

目前我目前的策略是按照教程进行到底,然后尝试使用下面评论中的工具来诊断问题到底是什么。希望我不会再花一周的时间来解决这个问题..

最佳答案

有多个错误:

第一个问题

在我使用 JQuery 执行 Ajax 调用的 javascript 代码中,我忘记将域从 localhost 更改为主机的域。即我使用的是 $.get("http://localhost:8080/request.do ) 而不是 $.get("http://remoteServerIPAddress:8080/request.do )。

因此,当我在远程服务器上启动应用程序时,任何明确进行的 ajax 调用都不起作用。

它不起作用的原因是因为 localhost 指的是代码当前正在执行的任何计算机。

由于它的 javascript 代码在客户端浏览器上运行(而不是在服务器上),所有使用 localhost 的 ajax 调用都试图向客户端计算机而不是远程计算机发出服务器请求,就像他们应该的那样。

下图有助于解释:my mistake

第二个问题

Derby 的 ./startNetworkServer 命令要求您在它之前使用 sudo 以便 webapp 连接到数据库。

当我不使用 sudo 时,没有任何迹象表明出现了问题。看起来好像网络已成功启动并监听端口 64414。

但是,当 Webapp 启动时,我会收到“连接被拒绝”的消息,但没有明确解释原因。只有通过反复试验(以及几个小时),我才发现这是原因。

就个人而言,我非常不喜欢“sudo”。

关于tomcat - 无法连接到 Derby 网络服务器,不清楚是什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com