Java服务器端应用程序,如何使用?

Java服务器端应用程序,如何使用?,java,apache-mina,Java,Apache Mina,我正在用Java构建一个可伸缩的服务器端应用程序,但我需要知道“应该做的和不应该做的” 该应用程序需要客户端通过TCP套接字连接到服务器,我听到了很多关于ApacheMina的好消息,所以我想我应该尝试一下并围绕这一点构建它。我还需要该应用程序与数据库通信,并根据请求或推送将合适的数据发送给客户端 我会让我管理自己的家庭服务器,这样即使是在我的控制之下 我对以下几点有所怀疑: 服务器端是否需要有 GUI,用于报告状态、连接 以及例外情况。如果是,我该怎么办 实现这个,我应该使用Swing吗 米

我正在用Java构建一个可伸缩的服务器端应用程序,但我需要知道“应该做的和不应该做的”

该应用程序需要客户端通过TCP套接字连接到服务器,我听到了很多关于ApacheMina的好消息,所以我想我应该尝试一下并围绕这一点构建它。我还需要该应用程序与数据库通信,并根据请求或推送将合适的数据发送给客户端

我会让我管理自己的家庭服务器,这样即使是在我的控制之下

我对以下几点有所怀疑:

  • 服务器端是否需要有 GUI,用于报告状态、连接 以及例外情况。如果是,我该怎么办 实现这个,我应该使用Swing吗
  • 米娜正在处理连接,但是 如何处理数据库(MySQL)
  • 我如何测试此应用程序的可用性 可伸缩性,如何模拟 客户端到服务器的连接
  • 有什么框架可以做到这一点吗 以上所有的还是我必须 处理好每一个方面
服务器端是否需要GUI来报告状态、连接和异常。如果是这样的话,我应该如何实现这一点,我应该使用Swing吗

您不必有GUI端,只需将日志写入文件,或使用其他日志服务器,如windows事件日志

MINA正在处理连接,但我如何处理数据库(MySQL)

有很多不同的方法可以访问MySQL数据库,我相信swing有一个框架。您还可以尝试hibernate,它类似于.NET中的LINQ,但适用于Java

如何测试此应用程序的可伸缩性,如何模拟客户端与服务器的连接

你需要一个测试框架,试试JUnit。

  • 如果你认为这对你的工作很重要 报案申请书 你是说,你可能 应该您可以使用Swing作为GUI。如果 你在网络方面更有经验 发展,你也可以使你的 要写入数据库的服务器应用程序, 并将其显示在网页上(和 也可以用另一种方式,通过 数据库)。你所做的选择 应该以你的想法为基础 应用程序将不断发展

  • 如果您的数据库操作受到限制,您可以只使用普通的JDBC库,它将为您提供对MySQL数据库执行写/读操作所需的类。如果你认为你的应用程序在某种程度上会增加大小/复杂性,你可能想考虑某种类型(例如Hibernate)。

  • 我已经了解到JMeter是一种用于在客户机-服务器设置中测试客户机负载的工具。我自己也没试过。JUnit不会帮你测量这个

我如何测试此应用程序的可用性 可伸缩性,如何模拟客户端 与服务器的连接

对于可伸缩性测试,我建议。它是一个优秀的、免费的、相当简单的工具,用于创建和测量应用程序上的负载。您可以获得有关响应时间、每秒事务数、服务器负载等信息

我经常在HTTP应用程序中使用它。对于您的TCP应用程序,它有一个TCP采样器,但是使用您已经编写的连接代码为其Java采样器创建一个实现可能会更容易。我还建议将其与相结合,以便您可以在测试期间测量服务器CPU/内存

可能需要几天的时间来熟悉这个工具,但它对我很有用

服务器端是否需要GUI, 报告状态、连接性和 例外情况

老实说,用于服务器端的GUI可能太过了。当然,如果有一个控制台,有一堆闪烁的红光和绿光,还有滚动的日志,那会很好,但归根结底,这些都只是YAGNI项目

只要您的服务器正在为您想要跟踪的事务和事件编写日志和审核信息,就足够了。拥有GUI只会增加服务器的复杂性,可能会产生更多的bug。另外,如果您有效地使用日志,则可以插入其他监视/警报机制(例如SNMP)

如何处理数据库(MySQL)

其他答案有一些好的建议;这可能是一个更适合单独讨论的话题,有很多关于它的问题。我建议对ORM+Java进行一些搜索,以获得一些好的意见。以下是一些不错的链接:

您可以在所有不同的orm上找到不同的观点,以及完全不使用它们的倡导者。从本质上说,我没有什么意见——只是在研究了各种选择之后,使用你认为适合这份工作的东西

有没有什么框架可以做到这一切 还是我必须处理 各方面

值得怀疑,如果有的话,它可能是非常通用的,你最终还是会为它编写一堆代码。对于ORM+GUI(如果您使用GUI),有现成的MVC+数据库web解决方案可以在JVM上运行,比如。但你的大多数问题都涉及不同的问题领域,每个领域都需要自己的解决方案

  • 服务器端是否需要GUI来报告状态、连接和异常。如果是这样的话,我应该如何实现这一点,我应该使用Swing吗
不,没必要。异常应记录在日志文件中。当客户端请求时,可以在一个简单的控制台中报告状态。还有连接信息。换句话说,(Swing)GUI可能很方便,但无论如何你都应该从低级别的东西开始,它是一个低优先级的特性,拥有它很好

  • MINA正在处理连接,但我如何处理数据库(MySQL)
我不知道这个问题是关于数据库连接还是数据库访问。如果是关于数据库访问的,根据您将要做的事情的复杂性和孤独性,ORM可能是