2

我正在尝试编写一个 24/7 全天候运行的 Java 服务,从网络上抓取内容,并将其存储到数据库中。鉴于我想...

1.) 有一个应用程序服务器,我可以将我的代码部署到(并让它自动运行)。这个应用程序服务器应该与我的开发环境将运行的机器放在一个单独的盒子上。

2.) 有一个开发平台(我更喜欢基于 eclipse 的东西),它允许我将我的代码直接部署到应用程序服务器(所以我不必对所有内容进行 ftp 测试)。

3.) 使用像 Spring 这样的框架。

实际上,我想知道为我的...选择什么

1.) 应用服务器

2.)开发环境(ide)——如果是eclipse,使用什么服务器适配器

3.) 框架

到目前为止,我已经尝试将VirgoSpringSource STS一起使用,但无法为非本地主机驻留服务器配置 Web 服务器适配器。我不想在我的开发机器上安装 Virgo,也不想为了部署而将我的代码 ftp 跳到我的生产服务器上。

4

3 回答 3

3

为什么不直接使用 Tomcat 或其他一些 Web 容器,但最好将其拆分为两个应用程序。

有一个可以作为独立应用程序进行抓取的工具,为此您可以选择任何东西,我会选择Groovyhttp://groovy.codehaus.org/),因为在这里易于开发和维护很重要,并且您可以使用 Eclipse 的 Groovy 插件。

另一个是 Web 服务,为此我认为Scalahttp://www.scala-lang.org/)会很好,如果你有时间学习它,但是Grails(一个 groovy 框架)会是有益的,所以您可以编写 REST 或 SOAP Web 服务。

通过将它们分开,您可以为该特定方面选择最佳解决方案,因为 Web 服务器不应该参与抓取,但 Web 服务器将希望从数据库中读取。

这两种语言在 JVM 上运行并且可以使用常规的 Java 类/库,但是它们比普通的 Java 有所改进。

于 2010-08-21T17:54:59.947 回答
0

原来有一些 maven 插件可以为我远程部署我的应用程序。最值得注意的是货运。这样,我可以保持所有初始工具/服务相同(Virgo、STS、Maven)。

于 2010-08-21T19:27:26.533 回答
0

我最近实际上建立了类似的东西。我的应用程序可以在没有 servlet 容器或应用程序服务器的情况下运行。我选择在 Tomcat servlet 引擎中运行我的应用程序的原因是,我可以向它添加一个 REST API 以轻松检索服务器状态信息,但我离题了。

普通的 Eclipse J2EE 安装具有不错的 Tomcat 支持,因此在不了解您的品味和细节的情况下,我会选择它。

要使您的应用程序自启动,您需要实现ServletContextListener接口:

public class ServerClass extends HttpServlet implements ServletContextListener {

  public void contextInitialized( ServletContextEvent event ) {

    // create and start a thread here.

  }

  public void contextDestroyed( ServletContextEvent event ) {

  }

}    

将以下内容添加到您的web.xml:

<listener>
    <listener-class>com.my.ServerClass</listener-class>
</listener>

您想使用哪个框架,只有您可以决定。您的问题是通用的,以便对此给出一个体面的答案。阅读一些并选择一个。普通的旧 Java 也可以,否则 Scala 可能是一个不错的替代选择。

所以,回答你的问题:

  1. Tomcat servlet 引擎
  2. 香草 J2EE Eclipse 版本
  3. 普通的旧 Java
于 2010-08-22T07:17:04.850 回答