我可以使用' 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文件,因为它显示了&#34;(未知来源&#34;对于其中一些,(但这只是一个猜测)。我确实阅读了一些其他帖子关于将derbyclient.jar放入tomcats lib文件夹,但我甚至不确定这是不是问题所在。
我使用以下教程安装tomcat:digitial Oceans tomcat installation guide我不确定设置如何在远程计算机上运行。设置权限有很多内容,并没有真正解释为什么设置这些权限。为什么不为我的用户安装tomcat?创造一个“tomcat”的重点是什么?用户组?它为问题增加了很多复杂性,但没有明确解释我们为什么这样做以及后果是什么。
目前我的策略是遵循教程到最后,然后尝试下面评论中的工具来诊断问题的确切原因。 希望它不会再花我一个星期来解决这个问题..
答案 0 :(得分:1)
有多个错误:
第一个问题
在我使用JQuery进行Ajax调用的javascript代码中,我忘记将域名从localhost更改为主机域。即我使用$ .get(“http://remoteServerIPAddress:8080/request.do)而不是$ .get(”)。
因此,当我在远程服务器上启动应用程序时,任何明确的ajax调用都不起作用。
它不起作用的原因是因为 localhost 指的是代码当前正在执行的任何计算机。
由于其javascript代码在客户端浏览器(而不是服务器)上运行,所有在其中使用 localhost 的ajax调用都试图向客户端计算机而不是远程计算机发出服务器请求,就像他们应该的一样。
下图有助于解释:{{3}}
第二个问题
Derby的 ./ startNetworkServer 命令要求您使用 sudo 才能将webapp连接到数据库。
当我没有使用 sudo 时,没有任何迹象表明出现了问题。看起来好像网络已成功启动并正在侦听端口64414。
但是,当webapp启动时,我会收到“拒绝连接”,但没有明确解释原因。只有通过反复试验(以及几个小时)我才发现这是原因。
就个人而言,我非常不喜欢'sudo'。