CapeDwarf – Java EE上的Google App Engine

我有很多爱好。 从早期的Java EE规范一路走来,并通过Java EE 7进行了“云”之旅,我很好奇看到新宣布的CapeDwarf项目有哪些库存,可以在内部引入Google的平台即服务,提供“ Google App Engine ” 。

到目前为止的故事

我确实使用了App Engine。 在过去,这是我第一个真正的PaaS产品。 我喜欢它。 我不喜欢的是,您必须检查GAE是否能很好地使用Java风格。 六月底的几天前, 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šJustin积极响应,乐于助人,因为到目前为止我已经体验过所有Red Hat Java专家。 如果您要查找示例,则CapeDwarf项目中基于Arquillian的测试范围很广。 因此,这是现在开始的好地方。

Google App Engine可以替代Java EE 8吗?

底线是什么? 我会说GAE基础设施已经成熟。 它于2008年4月推出,并于2011年底发布给公众,在满足客户需求方面已有5年的坚实基础。 查看早期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

参考: CapeDwarf – JCG合作伙伴 Markus Eisele在Java的企业软件开发 上的Java EE上的Google App Engine 。

翻译自: https://www.javacodegeeks.com/2013/10/capedwarf-google-app-engine-on-java-ee.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二周读书笔记——《构建之法》

【对一些实例的看法】 “我写了二叉树的遍历算法实现&#xff0c;在这里&#xff0c;二叉树是数据结构&#xff0c;遍历的实现细节是算法。C程序就是结果。但是这个程序有什么实际用处呢&#xff1f;在Java和其他一些语言中&#xff0c;似乎没有指针&#xff0c;那我可以不必了…

java springmvc 数据库事务_事务的简单回顾_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

SpringMVCSpring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色&#xff0c;这种分离让它们更容易进行定制。SpringSpring是一个开源框架&#xff0c;Spring是于2003 年兴起的…

前端 ---jQuery的补充

15-jQuery补充 jquery内容补充 jquery除了咱们上面讲解的常用知识点之外&#xff0c;还有jquery 插件、jqueryUI知识点 jqueryUI 官网&#xff1a; https://jqueryui.com/ jqueryUI 中文网&#xff1a; http://www.jqueryui.org.cn/ jquery插件内容包含 官网demo&#xff1a; h…

用Java编写Hadoop MapReduce任务

尽管Hadoop框架本身是使用Java创建的&#xff0c;但MapReduce作业可以用许多不同的语言编写。 在本文中&#xff0c;我将展示如何像其他Java项目一样&#xff0c;基于Maven项目在Java中创建MapReduce作业。 准备示例输入 让我们从一个虚构的商业案例开始。 在这种情况下&#…

Spring集成:轻量级集成方法

当今的应用程序希望能够访问企业环境中的所有业务&#xff0c;而无需考虑与绝望的系统无缝集成的应用程序技术。 可以通过使用中间件技术对各种系统进行布线来实现这种集成。 集成平台使应用程序可以相互共享信息的环境&#xff0c;从而使体系结构具有高度的互操作性。 Spring…

接口IDisposable的用法

C#的每一个类型都代表一种资源&#xff0c;而资源又分为两类&#xff1a; 托管资源 由CLR管理分配和释放的资源&#xff0c;即从CLR里new出来的对象。非托管资源 不受CLR管理的对象&#xff0c;如Windows内核对象&#xff0c;或者文件、数据库连接、套接字、COM对象等。如果类…

图形处理:betweeness中心性– neo4j的密码与graphstream

上周&#xff0c; 我写了关于中间性中心性算法以及使用graphstream 理解它的尝试 &#xff0c;在阅读源代码时&#xff0c;我意识到我可以使用neo4j的所有最短路径算法将某些东西放在一起。 概括地说&#xff0c;中间性中心度算法用于确定图中节点的负载和重要性。 在与Jen讨…

小程序之Tab切换

小程序越来越火了&#xff0c;作为一名&#xff0c;额 有理想的攻城狮&#xff0c;当然要紧跟互联网时代的步伐啦&#xff0c;于是我赶紧抽时间学习了一下小程序的开发&#xff0c;顺便把经验分享给大家。 对于申请账号以及安装开发工具等&#xff0c;大家可以看官网&#xff…

6759: 异或序列

6759: 异或序列 时间限制: 1 Sec 内存限制: 128 MB题目描述 已知一个长度为n的整数数列a1,a2,…,an&#xff0c;给定查询参数l、r&#xff0c;问在al,al1,…,ar区间内&#xff0c;有多少子序列满足异或和等于k。也就是说&#xff0c;对于所有的x,y(l≤x≤y≤r)&#xff0c;满足…

java随机数排序算法_理解快速排序算法

快速排序在平均状况下&#xff0c;排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n^2)次比较&#xff0c;但这种状况并不常见。事实上&#xff0c;快速排序通常明显比 其他Ο(n log n)算法更快&#xff0c;因为它的内部循环(inner loop)可以在大部分的架构上很有效率地…

开课吧视频内容汇总

1. 前端读取文件内容&#xff0c; FileReader对象 2. 用户联网状态 3. application/x-www-form-urlencoded 参数序列化 &#xff08;具体借鉴jquery的$.param方法&#xff09;&#xff0c;后端接收到的数据格式是 a[0][a] 1,并不会将其整理成对象或者数组 var nextStr ;funct…

Servlet和JSP中的文件上传示例

使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务。 在对Servlet或JSP进行编码以处理文件上传请求之前&#xff0c;您需要了解一点有关HTML和HTTP协议中文件上传支持的知识。 如果要让用户从文件系统中选择文件并上传到服务器&#xff0c;则需要使用<inpu…

20165312-第4周-课上内容补做以及知识点总结

20165312-第4周-课上内容补做以及知识点总结 1、课上内容补做 教材代码完成情况测试p45这题很快就做完了&#xff0c;然后忘记提交了。。就开始做递归。想起来的时候已经过了时间。 public class Example3_7 {public static void main(String args[]) {int sum0,i,j;for(i1;i&l…

JavaScript实现表单的全选,反选,获取值

构思 通过for循环和for in循环来实现&#xff0c;界面效果如下 步骤 全选&#xff1a; 循环给所有的表单设置checked 反选&#xff1a; 循环内判断checked是否为true&#xff0c;如果为true则改为false否则改为true 获取值&#xff1a; 最开始用for取&#xff0c;但是只打印最后…

EJB钝化和激活示例

在本教程中&#xff0c;我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息&#xff0c;并在整个会话中保存该信息。 但是&#xff0c;事实是&#xff0c;客户端会话往往会在相当长的时间内保持活动状态&#xff0c;…

命令模式详解

原文链接:https://www.cnblogs.com/java-my-life/archive/2012/06/01/2526972.html 在阎宏博士的《JAVA与模式》一书中开头是这样描述命令&#xff08;Command&#xff09;模式的&#xff1a; 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模…

c mysql5.7_CentOS7下MySQL5.7的三种安装方式详解

操作系统环境&#xff1a;CentOS 7.4最小化安装[rootnode3 src]# cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core)[rootnode3 ~]# uname -r3.10.0-693.5.2.el7.x86_64[rootnode3 ~]#安装版本为&#xff1a;MySQL 5.7.20一、编译安装MySQL5.71、下载源码包[rootno…

Struts2 学习之小白开始

Struts2 基础知识学习总结 Struts2 概述&#xff1a;Struts2 是一个用来开发 MVC 应用程序的框架&#xff0c;他提供了 Web 应用程序开发过程中的一些常见问题的解决方案&#xff0c;比如对于用户输入信息合法性的验证&#xff0c;统一的布局&#xff0c;国际化等&#xff0c;既…

机器学习的数学基础 - 信息论

机器学习的数学基础 - 信息论 信息论 信息论本来是通信中的概念&#xff0c;但是其核心思想“熵”在机器学习中也得到了广泛的应用。比如决策树模型ID3&#xff0c;C4.5中是利用信息增益来划分特征而生成一颗决策树的&#xff0c;而信息增益就是基于这里所说的熵。所以它的重要…

了解ElasticSearch分析器

令人遗憾的是&#xff0c;许多早期的互联网啤酒配方不一定采用易于消化的格式。 也就是说&#xff0c;这些食谱是通常在电子邮件或论坛帖子中最初组成的非结构化的方向和成分混合列表。 因此&#xff0c;尽管很难轻松地将这些配方放入传统的数据存储中&#xff08;表面上看是为…