我正在尝试编写一个全天候运行的Java服务,从Web上抓取内容并将其存储到数据库中。我想要的最佳框架是什么......
1。)有一个我可以部署代码的应用程序服务器(并让它自动运行)。此应用程序服务器应与我的开发环境将运行的机器位于一个单独的框中。
2.。)有一个开发平台(我更喜欢基于eclipse的东西),它允许我将我的代码直接部署到应用服务器(所以我不必将所有东西都用于测试)。
3。)利用像Spring这样的框架。
实际上,我想知道我的选择...
1。)应用程序服务器
2.)开发环境(ide) - 如果eclipse,使用什么服务器适配器
3。)框架
到目前为止,我已尝试将Virgo与SpringSource STS一起使用,但无法为非本地主机驻留服务器配置Web服务器适配器。我不想在我的开发盒上安装Virgo,我不想让ftp将我的代码跳到我的生产服务器上进行部署。
答案 0 :(得分:3)
为什么不直接使用Tomcat或其他Web容器,但最好将其拆分为两个应用程序。
有一个作为一个独立的应用程序,并且作为一个独立的应用程序,你可以选择任何东西,我会选择Groovy
(http://groovy.codehaus.org/),因为易于开发和维护是重要的在这里,你可以使用Eclipse的Groovy插件。
另一个是网络服务,为此我认为Scala
(http://www.scala-lang.org/)会很好,如果你有时间学习它,但是Grails
(一个时髦的框架) )这将是有益的,因此您可以编写REST或SOAP Web服务。
通过分离它们,您可以为该特定方面选择最佳解决方案,因为Web服务器不应该参与抓取,但Web服务器将需要从数据库中读取。
这两种语言在JVM上运行,可以使用常规的java类/库,但是它们中的普通Java也有改进。
答案 1 :(得分:0)
原来有一些maven插件会为我远程部署我的应用程序。最值得注意的是Cargo。这样,我可以保持所有我的初始工具/服务相同(Virgo,STS,Maven)。
答案 2 :(得分: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可能是一个很好的替代选择。
所以,回答你的问题: