运行spring + hibernate应用程序而没有实际的servlet容器

时间:2012-09-13 15:45:55

标签: java spring hibernate tomcat servlets

我有一个Spring + Hibernate应用程序,我将其编译为*.war文件并将其部署到Tomcat。这对我来说是开发人员,但是:

有没有办法在某个用户的计算机上运行该应用程序,该计算机已安装Java但未安装tomcat?

我甚至接受这个解决方案,它使用somekinda包实际运行servlet容器并将应用程序部署到用户的计算机,但我不希望该用户必须安装容器并配置它等等。

有什么建议吗?

编辑:

基本上我希望用户从可执行文件运行我的Web应用程序,而无需安装tomcat或其他工具。

4 个答案:

答案 0 :(得分:4)

您有几个选择:

  1. 如果要将源代码分发给用户,并且已安装maven,则只需运行mvn jetty:runmvn tomcat:run即可在本地构建应用程序并在servlet容器中运行它由Maven插件启动。

  2. 您可以在应用程序中embed Tomcatembed Jetty,以便在应用程序中运行main()方法启动监听某个端口的servlet容器并运行您的应用程序。这样就可以将整个应用程序打包为一个.jar文件,并使用java -jar your.jar运行。

答案 1 :(得分:3)

Winstone servlet容器允许将war文件嵌入到winstone jar中,从而导致单个jar部署,可以使用“java -jar foo.jar”或可点击运行罐。

詹金斯/哈德森使用这个。我们使用它与一些类路径技巧来使用爆炸战。

有关详细信息,请参阅http://winstone.sourceforge.net/#embedding

这很可能是目前最优雅的方式。

答案 2 :(得分:2)

您当然可以从命令行运行spring + hibernate应用程序,使用ClassPathXmlApplicationContextmain方法中加载弹簧配置文件,以初始化弹簧容器和其余布线。

但是,要运行使用servlet或使用Java Servlet规范的类似范例编写的Web应用程序,那么您需要一个像Tomcat,AFAIK这样的servlet容器。

答案 3 :(得分:0)

不是一个直接的例子,但可能是类似的有用例子:http://www.zimbra.com/products/desktop.htmlhttp://www.zimbra.com/products/zimbra-open-source.html