1

我目前有一个 TCP Java 套接字通信实现,其中我有一个正在侦听端口(比如说端口 5478)的服务器。然后我需要一个 Android 客户端远程连接到 Java 服务器并发送 SQL 查询,然后将在服务器端数据库上执行,然后我想将结果列表发送回 Android 客户端(已经用自定义实现实现 Serializable 的名为 Result 的 Java 类)。我通过向 Android 客户端发送一个 ArrayList 的 Result 来做到这一点。Java 服务器始终监听端口,并通过多个线程支持多个客户端。如何将此实现迁移到更安全的平台,最好的方法是什么?我不需要尊重 HTTP 协议来提供这种通信。Tomcat是最好的解决方案吗?

谢谢

4

3 回答 3

0

Tomcat 是一个 Servlet 容器 + 网络服务器。如果您打算迁移到 tomcat,那么您将隐式迁移到 http。是的,如果你想要一个安全的通信..你可以创建一个基于肥皂的 web 服务(apache 轴)并将其托管在 https 上。

于 2012-08-18T08:43:18.083 回答
0

我会使用 Servlet3.0 作为 tomcat 的一部分。

然后从 android 你只需要使用 URL 向服务器发送 http 请求,servlet 就可以将它们数据库化。如果需要,您也可以序列化数据。

我希望这能回答你的问题。

~ 丹

//编辑:

设置好 eclipse 和 tomcat 后,就可以开始编写 servlet。首先 - 您必须将服务器配置为对某些地址使用 servlet,例如 localhost:8080/myServlet - 这意味着您发送到本地主机的任何内容都会触发 servlet。您的第一个 serverlet 的代码如下所示:

public class ExampServlet extends HttpServlet {

public void doPost(HttpServletRequest request, 
     HttpServletResponse response)
        throws ServletException, IOException
  {

您的 doPost 方法是在您对 servlet 正在侦听的地址执行 http post 请求时调用的方法。然后,您所要做的就是输入一些代码来读取请求以从消息正文中获取数据。基本上,您读取传入的请求对象,然后写入响应对象以将响应发送回客户端。那里有很多指南。我按照这样的方式开始:

http://www.coreservlets.com/Apache-Tomcat-Tutorial/tomcat-7-with-eclipse.html

希望有帮助:)

~ 丹

于 2012-08-18T08:43:22.603 回答
0

我不确定 mutch 额外的安全性 tomcat 如何为您的应用程序提供。想到两点:

  1. 强制执行身份验证和一些访问规则。这实施起来并不难,很大程度上取决于规则质量。但是,它可能会帮助您使用它。它通常被自己的实现所取代。但是,为了安全起见,您需要加密,即 https。或者,可以强化会话并获得与其绑定的权利。
  2. 请求文件映射。这实际上要复杂一些。您不应该自己编写代码。它比第一眼看上去要复杂得多。

However, one of the biggest security wholes ever is directly executing code you got from somewhere. For example SQL statements. Ok it's secure as long as your databse rights are set perfectly... Developing a securly encrypted protocol is not simple either. However, the major win on switching to tomcat (or whatever) might be scaleability for free. And I think implementing servlets is much simpler than programming against sockets. And there are many great to tools fo working with http(s) though ven it might be more complicated than yours, it's pretty simple to deal with.

Unfortunately I can't answer our question. I don't know what's the best solution is. But I think there's at least some potential for wins.

于 2012-08-18T14:23:59.887 回答