从网络连接到Java DB服务器(Derby)
我已使用以下代码启动Java DB服务器:从网络连接到Java DB服务器(Derby),java,derby,javadb,Java,Derby,Javadb,我已使用以下代码启动Java DB服务器: System.setProperty("derby.drda.startNetworkServer", "true"); try { NetworkServerControl serverControl = new NetworkServerControl(); serverControl.start(new PrintWriter(System.out, true)); } catch (Excepti
System.setProperty("derby.drda.startNetworkServer", "true");
try {
NetworkServerControl serverControl = new NetworkServerControl();
serverControl.start(new PrintWriter(System.out, true));
} catch (Exception e) {
e.printStackTrace();
}
我可以使用URL连接到本地PC上的数据库:
String dbURLTable = "jdbc:derby://localhost:1527/Tables;create=true;user=Gen;password=YZG";
但是,当我尝试在LAN上连接到它(禁用防火墙)时,我使用以下URL:
String dbURLTable = "jdbc:derby://192.168.1.105:1527/Tables;create=true;user=Gen;password=YZG";
但是另一台电脑无法连接到这个数据库,有什么问题吗?
我得到的错误是:
java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server 192.168.1.106 on port 1,527 with message Connection refused: connect.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at Admin.CreateTables.CreateT(CreateTables.java:188)
at Admin.CreateTables.run(CreateTables.java:13)
at java.lang.Thread.run(Thread.java:745)
Caused by: ERROR 08001: java.net.ConnectException : Error connecting to server 192.168.1.106 on port 1,527 with message Connection refused: connect.
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)
... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
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)
... 11 more
java.sql.SQLNonTransientConnectionException:java.net.ConnectException:在端口1527上连接到服务器192.168.1.106时出错,消息连接被拒绝:connect。
位于org.apache.derby.client.am.SQLExceptionFactory.getSQLException(未知源)
位于org.apache.derby.client.am.SqlException.getSQLException(未知源)
位于org.apache.derby.jdbc.ClientDriver.connect(未知源)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
在Admin.CreateTables.CreateT(CreateTables.java:188)
运行(CreateTables.java:13)
运行(Thread.java:745)
原因:错误08001:java.net.ConnectException:连接到端口1527上的服务器192.168.1.106时出错,消息连接被拒绝:connect。
位于org.apache.derby.client.net.NetAgent。(来源未知)
位于org.apache.derby.client.net.NetConnection.newAgent(未知源)
位于org.apache.derby.client.am.ClientConnection。(来源未知)
位于org.apache.derby.client.net.NetConnection。(来源未知)
位于org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(未知源)
... 还有6个
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:589)
位于java.net.Socket.connect(Socket.java:538)
位于java.net.Socket。(Socket.java:434)
位于java.net.Socket。(Socket.java:211)
位于javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:271)
位于org.apache.derby.client.net.OpenSocketAction.run(未知源)
位于org.apache.derby.client.net.OpenSocketAction.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
... 还有11个
发生这种情况是因为您正在使用0-arg构造函数NetworkServerControl()
创建NetworkServerControl
,该构造函数不允许远程连接
//accepts connections from other hosts on an IPv4 system
NetworkServerControl serverControl =
new NetworkServerControl(InetAddress.getByName("0.0.0.0"),1527);
您必须使用NetworkServerControl(InetAddress地址,int端口号)
才能允许远程连接
//accepts connections from other hosts on an IPv4 system
NetworkServerControl serverControl =
new NetworkServerControl(InetAddress.getByName("0.0.0.0"),1527);
有关详细信息他们收到的错误/异常是什么?谢谢。这就是我需要的答案,我把IP地址改为0.0.0.0,它就像一个符咒!