Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-通信链路故障_Java_Mysql_Jdbc - Fatal编程技术网

Java-通信链路故障

Java-通信链路故障,java,mysql,jdbc,Java,Mysql,Jdbc,我刚刚跟我的主机说我的网页在那里,他们说他们允许JDBC连接 无论如何,您可以查看的页面是 这是我的错误: **** Looking for database... com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The drive

我刚刚跟我的主机说我的网页在那里,他们说他们允许JDBC连接

无论如何,您可以查看的页面是

这是我的错误:

**** Looking for database...
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at test.init(test.java:38)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission [0:0:0:0:0:0:0:1]:4464 connect,resolve)
    at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:407)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:268)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292)
    ... 16 more
java.lang.NullPointerException
    at test.init(test.java:69)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.NullPointerException
引用您的代码:

  // if user loads applet online
  conn = DriverManager.getConnection("jdbc:mysql://localhost:4464/jsfdan_mystikdan", "jsfdan_muser", "test");
小程序是在用户机器上运行的程序,浏览器位于该机器上。因此,
localhost
在此阶段指的是用户的机器。大多数用户可能没有在他们自己的机器上运行MySQL,即使他们运行MySQL,它也不会是您的小程序所追求的,而且它无论如何都会从小程序的沙盒环境中退出

编辑(在评论中讨论后):

从前面相关问题中的讨论和评论来看,您似乎试图从分布到任何地方的客户端的应用程序(applet)直接连接到MySQL服务器,这通常是错误的方法

  • 您担心在示例中发布您的用户名/密码。与广泛分发小程序相比,这只是一个小问题:任何人都可以轻松查看应用程序发送到MySQL服务器的流量,并获取用户名/密码
  • 大多数MySQL服务器都被阻止外部访问,主要是因为与整个应用程序的访问需求相比,它们自身没有提供合适的访问控制。情况并非总是如此,但插入/选择/更新操作本身的访问控制往往过于粗糙,无法代表整个应用程序的功能目的
对于大多数使用数据库的服务,用户管理和访问控制是在应用程序级别完成的,而不是在数据库级别。当您使用共享提供程序为整个应用程序创建一个数据库和一个用户帐户以供使用时尤其如此,即使您需要多个用户

典型的解决方法是开发另一个客户机将调用的服务(通常是web服务),为您希望客户机对数据执行的各种操作提供合适的身份验证和使用上下文

我不确定您的托管服务是否允许您运行Java服务,但更便宜的托管提供商倾向于让您运行PHP、Perl和/或Python服务,这样您就可以用其中一种语言编写服务,并让您的小程序成为与它们对话的客户机

解释如何编写web服务可能超出了本问答的范围。一般来说,您可能会遇到3类:REST样式的web服务(它是一种体系结构样式,由资源和表示的概念指导)、XML-RPC(通常称为“REST”)错误的是,您将XML片段发送到某个web页面,该页面将调用函数/方法并返回一些结果;您可能可以使用JSON和SOAP(在这里您可能会获得更多工具,但也可能会更臃肿,这取决于您是否熟悉)。关于哪一个更好,一直有争论,但这取决于你调查并选择你认为对你的应用更好的。这可能取决于您的主机上可以部署什么。

引用您的代码:

  // if user loads applet online
  conn = DriverManager.getConnection("jdbc:mysql://localhost:4464/jsfdan_mystikdan", "jsfdan_muser", "test");
小程序是在用户机器上运行的程序,浏览器位于该机器上。因此,
localhost
在此阶段指的是用户的机器。大多数用户可能没有在他们自己的机器上运行MySQL,即使他们运行MySQL,它也不会是您的小程序所追求的,而且它无论如何都会从小程序的沙盒环境中退出

编辑(在评论中讨论后):

从前面相关问题中的讨论和评论来看,您似乎试图从分布到任何地方的客户端的应用程序(applet)直接连接到MySQL服务器,这通常是错误的方法

  • 您担心在示例中发布您的用户名/密码。与广泛分发小程序相比,这只是一个小问题:任何人都可以轻松查看应用程序发送到MySQL服务器的流量,并获取用户名/密码
  • 大多数MySQL服务器都被阻止外部访问,主要是因为与整个应用程序的访问需求相比,它们自身没有提供合适的访问控制。情况并非总是如此,但插入/选择/更新操作本身的访问控制往往过于粗糙,无法代表整个应用程序的功能目的
对于大多数使用数据库的服务,用户管理和访问控制是在应用程序级别完成的,而不是在数据库级别。当您使用共享提供程序为整个应用程序创建一个数据库和一个用户帐户以供使用时尤其如此,即使您需要多个用户

典型的解决方法是开发另一个客户机将调用的服务(通常是web服务),为您希望客户机对数据执行的各种操作提供合适的身份验证和使用上下文

我不确定您的托管服务是否允许您运行Java服务,但更便宜的托管提供商倾向于让您运行PHP、Perl和/或Python服务,这样您就可以用其中一种语言编写服务,并让您的小程序成为与它们对话的客户机

解释如何编写web服务可能超出了本问答的范围。一般来说,您可能会遇到3类:REST样式的web服务(它是一种体系结构样式,由资源和表示的概念指导)、XML-RPC(通常称为“REST”)错误的是,您将XML片段发送到某个web页面,该页面将调用函数/方法并返回一些结果;您可以使用JSON)和SOAP(您可能会从中获得mor)