我是一个相当新的玩家,事实上我现在正在阅读它,我该怎么说...问题的问题。目前我正在启动一个依赖于许多特殊java库(hibernate-spatial,jts等等)的项目。因为它还应该实现一个全面的REST API,所以我必须在Django和经典的JavaEE Glassfish应用程序之间做出决定。
但是现在我认为,通过游戏,我可以获得两全其美的效果,我真的想深入了解这一点。
游戏的一个特点,我真的无法想象,是将播放应用程序部署为WAR文件,甚至是像tomcat这样的简单Servlet容器。
这是对的,如果我的播放应用程序使用基于hibernate / hibernate-spatial的JPA持久层仍然可以作为WAR文件部署到一个简单的tomcat servlet容器中?或者我至少需要JavaEE应用服务器吗?
我无法相信......
答案 0 :(得分:7)
可以使用Play 2 War plugin将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容器是否是您的应用程序的必需品 - 没有一个应用程序运行得很好。
*
我知道这是一种反常的过度简化
答案 1 :(得分:4)
您不需要完整的Java EE服务器,甚至不需要像Tomcat这样的独立servlet容器。玩基本上是自己的服务器!更确切地说,Play与JBoss Netty捆绑在一起......一个可嵌入的Java服务器,它使用与Node.js相同的一些概念。如果您之前使用过Django,那么这个概念很像:
python manage.py runserver
许多Play开发人员使用PaaS (i.e. "cloud") service,例如Heroku或AppFog。如果要部署到自己的传统专用服务器,那么就像在Tomcat上一样在该机器上安装Play框架。部署文档更详细地介绍了here。
Play的第一个版本还有一个选项,可以将您的应用程序打包为WAR文件,以便部署到传统的servlet容器中。 Play 2.0放弃了这种支持。这是在Play 2.1中回归的路线图,但显然没有成功。
我希望恢复WAR文件功能,因为大多数企业商店都在其部署基础架构上投入了大量资金,并且对快速变化持怀疑态度。值得一提的是,由于使用了API,无论如何,Play 2.1应用程序都不会在超过7的Tomcat版本上运行。
但是,Play 2.1确实能够将应用程序捆绑到deployable ZIP files,类似于WAR文件。这些独立的ZIP仍然需要您在服务器上安装Play,但它们可以更轻松地将您的应用程序打包并部署到另一台机器上。