将Java服务器应用程序集成到应用程序服务器中,如TomCat,GlassFish等

时间:2011-06-21 07:56:14

标签: java web-applications tomcat glassfish

我正在处理执行以下操作的服务器应用程序:

  1. 从通过串行接口(javax.comm,RXTX)或插座寻址的测量设备读取数据。
  2. 使用套接字与其他服务器应用程序交换数据(读取和写入)。
  3. 使用JDBC将数据从(1)和(2)插入数据库。
  4. 将步骤(1)至(3)中的数据提供给基于JavaScript的Web应用程序。
  5. 我当前的原型是一个独立的Java应用程序,通过将数据写入通过Web服务器(Apache)传递给客户端的XML文件来实现任务(4),但我认为这是一个黑客攻击,不是一个干净的解决方案

    此服务器应用程序需要在没有任何Web客户端的情况下启动和工作。

    我想将此服务器应用程序集成到Java应用程序服务器中,但我对这些技术没有太多经验,也不知道从哪里开始。我已经为TomCat和GlassFish尝试了一些简单的例子,但这并没有让我更进一步,因为它们都是围绕同步服务Web请求而构建的,并且停止了对我来说有趣的地方。

    • 这可以在TomCat或GlassFish中运行这样的应用程序吗?

    • 如果是,那么开始的好点(示例,基类,......)?

    • 分割应用程序并在servlet中实现task(4),普通应用程序中的其余部分,通过套接字进行通信等等,是否有意义?

    • 其他服务器,例如JBoss,是否是更好的选择,如果是,为什么?

    编辑:
    我想使用Java EE容器的原因是:

    • 我想为步骤(4)设置一个干净的外部界面。

    • 从长远来看,应用程序需要扩展到大量的并发客户端(至少几个10.000),因此需要一种标准的可扩展性和应用程序管理方式。

2 个答案:

答案 0 :(得分:1)

我会松散地结合解决方案而不是尝试在Java EE / Servlet容器上做所有事情,因为使用套接字(由应用程序本身管理)交换数据不是您通常想要从Java EE / Servlet容器中执行的操作。

在Java EE容器上运行它也可能过度,因为这听起来不像典型的企业应用程序,其中安全性和事务管理之类的东西很重要,应用程序可以从Java EE / Servlet容器提供的服务中受益。

答案 1 :(得分:1)

通常,在诸如Tomcat之类的servlet容器中实现所有这些并不是一个好主意。

servlet容器旨在为来自客户端的请求提供服务。听起来你有一个将一直运行或至少定期运行的进程。您可以在Tomcat中执行此操作,但在外部执行此操作可能更容易。让Tomcat做好它的擅长,为浏览器的请求提供服务。当请求很短暂时,这是最快乐的。

所以我会按照你的建议做,并且只在容器中有第4步。您可以轻松查询在步骤3中填充的数据库,因此无需创建Web服务来填充servlet容器。

对于第4步,您需要通过休息,肥皂以及任何您喜欢的方式公开来自Tomcat的一些服务。然后,javascript客户端可以查询这些服务。这完全可以用Tomcat完成。

对于可伸缩性,使用Tomcat应该没有问题。如果它所做的只是将数据从数据库泵送到客户端,那么可能没有理由选择J2EE容器。如果您不需要复杂的事务管理或安全性,请尝试使用开源的东西。听起来你可以从Tomcat得到你想要的东西(如果需要的话,还可以使用hibernate& spring security)。如果你开始遇到性能问题,那么JBoss& amp; Tomcat:你需要更多的服务器。

我的建议:坚持使用简单的开源解决方案,只有在您认为有必要时才转移到应用服务器。