【发布时间】:2017-04-20 03:04:21
【问题描述】:
我可以使用 '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”用户组有什么意义?它给问题增加了很多复杂性,而没有明确解释我们为什么这样做以及后果是什么。
现在我目前的策略是按照教程进行到底,然后尝试下面的 cmets 中的工具来诊断问题到底是什么。 希望我不会再花一周的时间来解决这个问题..
【问题讨论】:
-
不,您发现 derbyclient.jar 很好,否则您会得到 ClassNotFoundException,并且您的异常堆栈跟踪中不会有行显示 org.apache.derby.client.net .* 课程。您可能没有看到 整个 异常。为确保您是,请执行以下操作:wiki.apache.org/db-derby/UnwindExceptionChain
-
“连接被拒绝”可能意味着您的 Derby 网络服务器未在 localhost:64414 上启动和运行。或者,这可能意味着 Derby 网络服务器已启动并正在运行,但某些网络防火墙或其他网络配置阻止了连接。你在什么操作系统上运行?您对网络有足够的了解以执行一些基本的网络诊断吗? (例如,
netstat注释、telnet命令、ping命令等)如果是这样,请查看是否可以缩小 Web 应用程序无法启动到 localhost:64414 的网络连接的原因。 -
使用 Ubuntu 15.10,在 GoDaddy 上,我之前听说过这些工具,但从未在实践中使用过,我会试一试。
-
我不确定现在发生了什么,因为我不再“拒绝连接”但我仍然无法连接.. netstat 明确表示 localhost:64414 正在监听。当我尝试运行我的 web 应用程序时,我收到错误代码 500,我的数据库访问对象中有一个空指针异常。因此,连接到服务器肯定存在问题。但目前还没有任何线索说明为什么会这样。
-
IT 原来是问题所在,一直以来,我在客户端 javascript 上的所有 ajax 请求都引用了 localhost 而不是远程服务器 IP。但是,我不确定为什么我在数据库上收到连接被拒绝消息。很高兴我现在可以正常工作了。
标签: tomcat web-deployment derby