java与java ee_CapeDwarf – Java EE上的Google App Engine

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

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

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

java与java ee

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

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

相关文章

基于MATLAB的高阶(两个二阶级联构成的四阶以及更高阶)数字图形音频均衡器系数计算(可直接用于DSP实现)

引言 前不久,在数字信号处理中需要对音频信号进行滤波,涉及图形均衡器、参数均衡器的设计,下面这个链接给出了一个图形音频均衡器的例子: https://arm-software.github.io/CMSIS_5/DSP/html/group__GEQ5Band.html 这个示例演示如何使用 Biquad 级联函数构建 5 波段图形均衡…

基于MATLAB的曼彻斯特调制与解调实现

引言 曼彻斯特编码也称为相位编码,是一种同步时钟编码技术。通过电平的高低转换来表示“0”或“1”,每一位的中间有一个跳变的动作,这个动作既作时钟信号,又作数据信号,但因为每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2,其编码效率为50%。常用于局…

【OFDM系列4】OFDM信号多径信道模型基础知识

多径信道模型(Multipath Channel Scenario) 信道脉冲响应(Channel Impulse Response, CIR) 信道的复基带脉冲响应如下所示 h ( τ ; t ) = ∑ l = 1 L a l ( t

kie-api_KIE-WB / JBPM控制台Ng –配置

kie-api大家好&#xff0c;这是我上一篇文章中有关如何使用jBPM Console的后续文章 。 这篇文章的主要思想是描述为了在您自己的公司中使用jBPM Console NG而需要进行的一些最常见的配置。 但是在讨论技术细节之前&#xff0c;我们将介绍KIE Workbench&#xff08;KIE-WB&#…

【OFDM系列5】单输入单输出OFDM(SISO-OFDM)多径信道迫零(ZF)和最小均方误差(MMSE)均衡器原理和公式推导

OFDM单输入单输出(SISO)迫零(ZF)均衡器 在去除CP之后,第k个子载波上的信号的FFT给出如下 Y k = H k D k + W k ⋯ ( 1 ) Y_k=H_k D_k+W_k\cdots(1)

如何在Tomcat中设置JNDI数据库连接池-Spring教程示例

在Spring和Tomcat中设置JNDI数据库连接池非常容易。 Tomcat服务器文档提供了有关如何在Tomcat 5、6或7中设置连接池的足够信息。在这里&#xff0c;我们将结合使用Tomcat 7和Spring框架在Tomcat服务器中创建连接池并在Spring中使用JNDI代码访问它们。 在上一篇文章中&#xff0…

java vm_Java VM –提防YoungGen空间

java vm正如您从我们以前的面向性能的文章中可能已经看到的那样&#xff0c;运行良好的JVM是实现最佳应用程序性能和稳定性的最重要目标之一。 这样的健康评估通常仅关注主要收集的频率&#xff08;避免&#xff09;或检测内存泄漏的存在。 年轻一代空间或短寿命物体的大小和足…

Java生产监控的阴暗面

自动化的工作流程是在敏捷环境中交付高质量产品的新金标准。 不幸的是&#xff0c;不断变化会带来不断的风险。 输入“可观察性”&#xff0c;这是一种度量&#xff0c;可以从系统的外部输出中推断出系统的内部状态。 知道应用程序如何在生产中运行的能力。 在本节中&#xff…

adf4350配置_配置MySQL以进行ADF开发

adf4350配置大家好。 今天&#xff0c;我将向您展示如何为Oracle ADF开发配置MySQL数据库。 恕我直言&#xff0c;当您将ADF与其他数据库而不是Oracle DB一起使用时&#xff0c;您将无法使用Oracle ADF的全部功能&#xff0c;有时您会发现自己在寻找解决方法&#xff0c;以实现…

如何在Java中使用重复项查找整数数组中的K个缺失数字?

自从我讨论任何编码或算法面试问题以来已经有很长时间了&#xff0c;因此我想重新考虑一种最流行的基于数组的编码问题&#xff0c;即在给定数组中查找缺失的数字。 在进行编程工作面试之前&#xff0c;您可能已经听说过或看到过此问题&#xff0c;但是面试官通常会使用许多不同…

基于同步压缩小波变换(Synchrosqueezed wavelet transforms)的时频分析的MATLAB实现(不使用内置函数wsst)

引言 同步压缩小波变换(Synchrosqueezed wavelet transforms, SST)采用了经验模态分解的设计思路,结合小波变换和reallocation theory构建而成,有明确的数学定义和推导。 EMD算法是一种旨在将它们分解成构建块函数的技术,这些构建块函数是(合理地)少量分量的叠加,这些分量…

垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?

垃圾收集算法,垃圾收集器我们的研究实验室正全速前进。 随着最近的资本注入 &#xff0c;我们只能保证我们不断创新的步伐只会加快。 我们进行的部分研究与GC优化有关。 在处理这个有趣的领域中的问题时&#xff0c;我们认为可以分享一些有关GC算法使用的见解。 为此&#xff…

与时俱进:在JAX-RS API中采用OpenAPI v3.0.0

看到时间流逝真是太恐怖了&#xff01; OpenAPI规范3.0.0是对Swagger规范的重大修改&#xff0c;大部分已于一年前发布&#xff0c;但是工具赶上了一段时间。 但是&#xff0c;随着Swagger Core 2.0.0的最新正式发布&#xff0c;事情肯定会加速。 为了证明这一点&#xff0c;著…

jclouds_jclouds的命令行界面

jclouds序幕 我使用和为jclouds贡献了一年多的时间。 到目前为止&#xff0c;我已经在很多领域广泛使用了它&#xff0c;尤其是在Fuse生态系统中 。 它的强大之处在于它缺少一件事&#xff0c;该工具可用于管理jclouds也提供访问权限的任何云提供商。 类似于EC2命令之类的工具&…

【数字信号处理】离散傅里叶级数(DFS)

周期信号的DFS 周期信号一定 不存在 离散傅里叶变换,通过引入冲激序列,可以进行表示,使得数学运算更加严谨;但一定存在傅里叶级数! 时域周期==>频域离散 时域离散==>频域周期 时域又离散又周期==>频域又周期又离散 联系序列的傅里叶变换DFT理解即可,只不过复指…

锁具行业电子工程师岗位职责_赏金猎人招募电子产品开发工程师产品结构工程师...

“赏金猎人”专栏6期来啦&#xff01;这个专栏&#xff0c;可以让产业需求被更广大的社区看见让社区更多有技能、有解决方案的小伙伴参与进来最终促进科技在传统产业中的应用落地专栏里面发布的猎人需求只要你觉得具备欢迎通过businesschaihuo.org跟我们取得联系今天要发布的是…

4代hiv检测50元_别瞧不起国货!这4个姥姥辈的护肤品,真心好用,还不到50元

在护肤这件事情上&#xff0c;其实最适合我们肤质的护肤品还是我们自己国家的生产的&#xff0c;但是国货这几年的确没有欧美的一些大牌&#xff0c;或者是日韩的护肤品更受到欢迎&#xff0c;国货被淹没的一个主要原&#xff0c;就是因为它的价格太过便宜了&#xff0c;可能老…

墙面有几种装修方法_新房装修除甲醛 用这几种方法就足够

新房装修后会散发出刺鼻的有害物质&#xff0c;其中甲醛是含量最高&#xff0c;危害最大的有害气体。那怎么才能有效的去除甲醛呢?下面小编就为大家带来新房装修除甲醛的四大方法&#xff0c;希望能给大家带来帮助。新房装修除甲醛方法一&#xff1a;开窗通风法将新房的窗户打…

Parallel Parking of Truck-Trailer Using Multistage Nonlinear MPC之MATLAB simulink编译转换C++代码(内附下载地址)

引言 这个例子展示了如何使用多级非线性模型预测控制(NLMPC)来并行停放卡车-挂车系统。 在本例的应用场景中,卡车-拖车系统(EGO车辆)在停车场行驶。当停车点被定位时,非线性预测控制规划器生成停车路径。然后,自行车使用另一个非线性MPC控制器,沿着规划的路径到达目标姿态…

攻防世界 适合做桌面_空间“狭小”的二人世界,适合情侣们做浪漫的事情

在最浪漫的11月与它邂逅&#xff0c;有着深秋的枫红、累累的苹果红、还有童话绘本中的苹果屋红&#xff0c;充满着热情活力的色彩&#xff0c;让人感到雀跃。眼瞧见银河的感动。那晚入住于福寿山农场的露营区&#xff0c;位在深山中的它空气轻透又鲜少光害&#xff0c;是观赏星…