5

我是新手,事实上我现在就读到了它,我应该说什么......问题超过问题。目前,我正在启动一个依赖于许多特殊 Java 库(hibernate-spatial、jts 等)的项目。因为它还应该实现一个全面的 REST API,所以我不得不在 Django 和经典的 JavaEE Glassfish 应用程序之间做出选择。

但现在我认为通过比赛我可以两全其美,我真的很想更深入地研究这一点。

我真的无法想象,play 的一个特性就是将 play 应用程序作为 WAR 文件部署到一个简单的 Servlet Container 中,比如 tomcat。

那么,如果我的 play 应用程序使用基于 hibernate/hibernate-spatial 的 JPA 持久层仍然可以作为 WAR 文件部署到简单的 tomcat servlet 容器,对吗?或者我是否至少需要一个 JavaEE 应用服务器?

我不敢相信...

4

2 回答 2

7

Play 2 应用程序可以war使用Play 2 War 插件进行部署。我自己没有这方面的经验,但目前它似乎是一个可行的解决方案。从我从论坛中读到的内容来看,WAR 包装应该仍然存在于未来版本中。

将 Play 2 应用程序部署为战争并没有什么特别之处。Play 2 应用程序“只是”一个响应 HTTP 请求的 Java 程序*,就像任何 Java Servlet 应用程序一样。如果某些插件确保 servlet 容器响应的 HTTP 请求被正确转发到 Play 2 应用程序,则它可以在 servlet 容器中按原样运行。

一般来说,Play 2 允许您使用几乎所有可用的 Java 技术。但是,由于 Play 2 应用程序本身并不在 servlet 中运行,因此它禁止您使用一组假定您使用 Java servlet 来响应请求的 Java EE 库。这对于 Hibernate 或其他 ORM/数据库库来说没有问题,但如果您的库需要访问 HTTP 通信(例如 Spring Web Security),就会出现问题。

如果 Django 是您项目的一个选项,我怀疑您的 Java 需求是否包括这样一个特定的库。您还应该检查一个实际的 servlet 容器是否对您的应用程序来说是必需的——Play 应用程序在没有它的情况下运行得很好。

*我知道这是一种不正当的过度简化

于 2013-02-20T23:55:15.933 回答
4

您不需要完整的 Java EE 服务器,甚至不需要像 Tomcat 这样的独立 servlet 容器。玩基本上是自己的服务器!更准确地说,Play 与JBoss Netty捆绑在一起……一个可嵌入的 Java 服务器,它使用与 Node.js 相同的一些概念。如果你以前使用过 Django,那么这个概念很像:

python manage.py runserver

许多 Play 开发人员使用PaaS(即“云”)服务,例如 Heroku 或 AppFog。如果您要部署到您自己的传统专用服务器,那么您可以在该机器上安装 Play 框架,就像安装 Tomcat 一样。部署文档在此处更详细地介绍。

Play 的第一个版本还可以选择将应用程序打包为 WAR 文件,以便部署到传统的 servlet 容器。Play 2.0 放弃了这种支持。它在 Play 2.1 中回归的路线图上,但显然没有成功。

我希望看到 WAR 文件功能恢复,因为大多数企业商店都在他们的部署基础设施上进行了大量投资,并且对快速变化持敌意。值得一提的是,由于使用了 API,Play 2.1 应用程序无论如何都不会在 Tomcat 7 之前的版本上运行。

但是,Play 2.1 确实能够将应用程序捆绑到可部署的 ZIP 文件中,类似于 WAR 文件。这些独立的 ZIP 仍然需要您在服务器上安装 Play,但它们可以更轻松地将您的应用程序从一台机器打包和部署到另一台机器。

于 2013-02-20T23:18:55.880 回答