2011-06-02 181 views
0

我正在开发一个连接到mysql数据库的java applet,该applet可以在本地主机上正常工作,但是当我上传它并尝试运行时,我收到错误信息为“通信链接失败包成功发送到服务器为0毫秒前。 驱动程序没有收到从我试图在x10hosting和主存的服务器” 任何数据包,如果有人知道的解决方案,请帮我...Applet无法连接到mysql服务器

回答

0

的小程序客户端。如果你想直接连接到一个mysql服务器,这意味着每个打开该applet的用户都应该安装mysql或者具有对远程数据库的访问权限和凭证。即使您的防火墙允许访问,这也是一个非常糟糕的主意。如果你确实每个人都可以访问你的数据库。

因此,如果您想与远程数据库进行通信,请使用某些协议(http最简单,通过Servlet)将请求发送到服务器并接收基于数据库结果生成的响应。例如,调用http://yoursite.com/addRecord?name=foo&[email protected]可能会告诉服务器端应用程序打开到mysql的(本地)连接并插入记录。

+0

是的,我想与远程数据库进行通信,但请你详细说明如何做到这一点,因为我是一个新手:( – Vipul 2011-06-02 08:36:13

+0

*“...意味着每个打开小程序的用户都应该安装mysql。”*为什么?你可以使用applet的库来分发Connector/J,我并不是说这是一个*远程*好主意,但用户不需要安装MySQL。 – 2011-06-02 08:36:27

+0

是的,我已经在我的applet库中添加了Connector/J 。但是当我运行该程序,当它试图连接到数据库时,它给了我指定的错误 – Vipul 2011-06-02 08:37:36

1

你确定你的MySQL服务器端口真的对公众开放吗?例如,在可公开路由的IP地址上,不会被路由器/网络阻止?很可能你的MySQL实例不能从外部访问......

......这是怎么回事。非常,非常非常适合有一个小程序直接与您的数据库服务器对话。通常情况下,小程序会与Web服务器上的中间层进行通信,然后再与数据库服务器通信。这有一个安全方面(你的中间层可以抵御对你的数据库的各种攻击),并且有一个实用性的方面:你可能希望保持公共网络上的聊天最少,并且你的服务器可以卷起来将多个操作的结果合并成一个包,然后发送给客户端。

如果你的MySQL服务器确实可用于外部世界,它的主机是否与该applet加载的主机相同?这是(未签名的)小程序的安全要求之一,它们只能打开与加载的主机的网络连接。但是,如果这是问题,我会希望你得到一个安全异常(除非Connector/J隐藏它)。

+0

好吧,这可能是问题,但可以请详细说明如何将我的数据库连接到我的小程序... – Vipul 2011-06-02 08:41:58

+0

@Vipul:环顾Web应用程序体系结构示例。 Web应用程序是三层或n层体系结构的经典示例。客户端项目(网页,小应用程序)与您的Web服务器交谈,该服务器与您的数据库进行交谈。你的数据库不应该直接从外部访问。 – 2011-06-02 08:43:44