java与java ee
我有很多爱好。 从早期的Java EE规范一路走来,并用Java EE 7进行了“云”之旅,我很好奇看到新宣布的CapeDwarf项目有什么库存,可以在内部引入Google的平台即服务,提供“ Google App Engine ” 。
到目前为止的故事
我确实使用了App Engine。 在过去,这是对我来说第一个真正的PaaS产品。 我喜欢它。 我不喜欢的是,您必须检查GAE是否能很好地发挥 Java风格。 6月底的几天前, Google和Red Hat宣布了GAE TCK正式合作伙伴关系,迟早应该将App Engine引入Wildfly。
安装和配置环境
让我们马上开始。 获取CapeDwarf并试用它。 核心是Wildfly或AS7,因为我们大多数人仍然知道JBoss Applicationsserver。 CapeDwarf只是一个扩展模块,需要内置。可以通过两种方式获取它:从下载页面上获取最新版本的Grep,该版本可能是Beta5(于2013-07-10发布),也可以自行构建。 我首先尝试了最后一种方法,它在github项目页面上有一个非常简短的自述文件 ,但我不建议这样做。 这大约需要30分钟(纯粹的构建时间),因为您还必须自己构建AS 7.2.0。 如果获得了zip发行版,则只需解压缩它,然后通过以下方式启动启用了CapeDwarf的服务器:
$JBOSS_HOME/bin/standalone.bat/.sh -c standalone-capedwarf.xml
这看起来像是AS 7的第一个启动,但事实上,由于JGroups启动,它花费的时间要长得多。 至少在我的机器上。 无论如何,之后您必须添加管理员用户并登录http:// localhost:9090 /进入服务器控制台,并通过访问“扩展名”选项卡检查扩展名是否存在。 现在您已经准备就绪。
使用留言簿示例应用程序
现在剩下要做的就是启动所选的IDE(在我的案例中为NetBeans),并启动一个不错的演示项目。 让我们坚持留言簿示例,它也是官方gae-sdk的一部分 。 您应该已经拥有Maven和Java 7。 该留言簿示例可作为正式原型获得,您可以使用以下mvn命令简单地获得它:
mvn archetype:generate -B
-DarchetypeGroupId=com.google.appengine.archetypes
-DarchetypeArtifactId=guestbook-archetype -DarchetypeVersion=1.7.7
-DgroupId=net.eisele.demo -DartifactId=guestbook -Dversion=1.0 -Dpackage=net.eisele.demo
您需要的所有依赖项都在中央,因此您甚至不必配置其他存储库! 立即打开生成的项目,并开始进行一些调整。 首先,您需要将pom.xml中的die appengine.target.version更改为1.8.3。接下来,您需要添加相关的数据存储区索引。 据我了解,GAE自行完成此操作。 需要指导依赖于几种现有Red Hat技术的CapeDwarf来启动索引。 将datastore-indexes.xml添加到您的src / main / webapp / WEB-INF /文件夹中,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true"><datastore-index kind="Greeting" ancestor="true" source="manual"><property name="date" direction="asc"/></datastore-index>
</datastore-indexes>
如果将<finalName> ROOT </ finalName>属性添加到pom的<build>部分,就可以开始了。 通过管理控制台部署该应用程序,或将其放入$ JBOSS_HOME / standalone / deployments文件夹。 你去。 导航到http:// localhost:8080 /并观看魔术发生。
您可以张贴问候语,甚至可以使用电子邮件地址登录并发表个性化评论。 一切都无需更改一行代码。 您甚至可以将同一段代码部署到App Engine。 进一步,如果您导航到http:// localhost:8080 / _ah / admin /,您将获得一个漂亮的小型管理控制台,该控制台可让您访问基础数据存储。
即使Datanucleus在此游戏中也能很好地发挥作用,您可以通过将jdoconfig.xml中的javax.jdo.PersistenceManagerFactoryClass更改为org.datanucleus.api.jdo.JDOPersistenceManagerFactory来使示例运行。 如果现在正确使用了依赖版本(jdo-api:3.0.1,datanucleus-core:3.1.5),并且使用了正确的maven datanucleus插件:
<plugin><groupId>org.datanucleus</groupId><artifactId>maven-datanucleus-plugin</artifactId><version>3.1.2</version><configuration><api>JDO</api><log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration></configuration><executions><execution><phase>process-classes</phase><goals><goal>enhance</goal></goals></execution></executions></plugin>
您也可以这样做。 试试看。 真的很容易。
目前有待改进
目前实施方式受到限制。 项目团队似乎专注于官方GAE-TCK。 根据CapeDwarf主页的说法,大多数API已经完成,26种服务中只有9种不支持。 鉴于我希望看到更多的文档。 目前,这基本上取决于Google的官方文档。 如果遇到一些特别的事情,那您就一个人了。 如果您对TCK有疑问,可以由新成立的Google网上论坛来解决。 好消息:项目负责人AlešJustinReact灵敏,乐于助人,因为到目前为止我已经体验过所有Red Hat Java专家。 如果您要查找示例,则CapeDwarf项目中基于Arquillian的测试范围很广。 因此,这是现在开始的好地方。
Google App Engine可以替代Java EE 8吗?
底线是什么? 我认为GAE基础设施已经成熟。 它于2008年4月推出,并于2011年底发布给公众,它在满足客户需求方面拥有坚实的五年。 查看早期Java EE 7规范中来自云主题的定义,并将它们与GAE已实现的结果进行比较令人不安。 尽管EE在应用程序层上有非常不错的技术削减,但GAE至少部分将其分解为面向服务的方式。 尽管您看到安全性之类的东西几乎遍及SE / EE(JAAS,JASPIC,各个规范),但GAE只是提供了用于用户管理的Users API和用于与其他系统集成的AppIdentity API 。 除此之外,它还提供Java EE根本无法提供的现成功能的API和抽象。 我在考虑Multitenancy API或Capabilities API之类的东西。 如果过去有人想在Google的PaaS上开始轻量级,并且想在以后迁移到基于本地硬件的Java EE,他必须仔细考虑映射技术并购买Google特定服务。 截止到今天,CapeDwarf已经大大改变了规则并降低了供应商锁定风险。
如果您看一下规范方面,那是有缺点的。 Google负责。 只。 目前,我没有任何咨询委员会或类似机构。 因此,如果Google决定撤回(例如,读者灾难),许多人将被困住。 另一方面,开放的TCK至少使每个人都可以免费获得该规范(ASL2.0)。 这就是使CapeDwarf和AppScale成为可能的根本原因。 目前至少对我而言,这不是更好的Java EE。 但是考虑到我们再次用Java EE 8展望阴暗的未来,这可能是需要完成的新规范的蓝图,也可能是我称之为“以主题为中心的API”的很好的指南。 照顾业务需求,而不再只是解决技术问题。 在接下来的几年中,这将是一个有趣的运动,我很好奇,是否还有其他供应商迟早会参加该培训。 而可悲的是看到谷歌自己拉出来的JCP和标准组织内部的活性发展。
进一步的链接和阅读
- 项目负责人的博客: http : //in.relation.to/Bloggers/Ales
- Github上的CapeDwarf: https : //github.com/capedwarf/
- CapeDwarf下载: http ://www.jboss.org/capedwarf/downloads
- App Engine TCK: https : //github.com/GoogleCloudPlatform/appengine-tck
翻译自: https://www.javacodegeeks.com/2013/10/capedwarf-google-app-engine-on-java-ee.html
java与java ee