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%。常用于局…

记录一次某MFC软件算法逆向之旅

传说中MFC必杀(并不能通用) 对于直接使用SDK而不使用第三方库的程序,我们要定位到程序的“关键代码”并不困难。通常在CreateWindow函数或DialogBoxParam函数下断点,可以直接获得其主界面的窗口过程或对话框过程。但是对于使用了MFC的程序,我们找到的窗口过程或对话框过程是…

mongodb启动不能锁定_使用MongoDB进行乐观锁定重试

mongodb启动不能锁定在我以前的文章中&#xff0c;我谈到了对MongoDB批处理程序采用乐观锁定的好处。 如我之前所写&#xff0c;乐观锁定异常是可恢复的异常&#xff0c;只要我们获取最新的Entity&#xff0c;我们就会对其进行更新并保存。 因为我们使用的是MongoDB&#xff0…

基于Funcode和VS2017的游戏开发

主要实现了两个小游戏,飞机大战和冰火人历险记,首先用Funcode生成地图文件和VS工程,然后进行编程 头文件 CommonAPI.h #ifndef _COMMON_API_H_ #define _COMMON_API_H_ // #include <windows.h>//===============================

VMWare vijava –“用户名或密码不正确”异常的奇怪情况

在我参与的一个项目中&#xff0c;我们使用yavijava &#xff08;这是vijava的一个分支&#xff09;库与托管我们的VM的vCenter进行交互。 vCenter通过其Web服务端点公开了各种API&#xff0c;这些端点是通过HTTP调用的。 yavijava库具有必要的钩子&#xff0c;允许开发人员在客…

【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…

win10任务栏透明+变窄+免安装

透明设置 在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced中新建DWORD32位值TaskbarAcrylicOpacity&#xff0c;设置数值为0 重启资源管理器explorer.exe即可 变窄 下载7Taskbar软件7tt_setup.exe&#xff0c;直接解压&#xff0c;对于本…

java vm_Java VM –提防YoungGen空间

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

Java生产监控的阴暗面

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

MATLAB库函数upfirdn(分数倍采样率变换)的C语言实现【姊妹篇2纯C语言实现】

upfirdn原理 yout = upfirdn(xin,h,p,q) upfirdn的功能在MATLAB官方帮助文档中说得很清楚 通过插零实现 p p p倍上采样对上采样之后的信号用给定的 h h h(通常为低通滤波器)进行滤波对滤波结果进行

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

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

模拟调频信号FM解调的matlab和C语言实现【姊妹篇2纯C语言实现】

本文所需的FM已调信号、原始音频、包络检波法解调后的音频、差分相位法解调后的音频,可通过以下链接进行下载。其中,FM已调信号文件较大共有两百多兆,故截取其部分上传,若有需要完整信号的请留言! FM调制解调音频文件.rar 已调信号:采样率为 F s = 5 m H z Fs=5mHz Fs=

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

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

【自适应盲均衡12】判决引导(DD)+判决反馈(DFE)+双模式切换的盲均衡算法在双绞线基带通信中的应用MATLAB仿真(采用三电平PAM信号模型)

引言 为克服数字基带信号在通过非屏蔽五类双绞线时产生的严重码间干扰( ISI) ,常采用自适应均衡技术来减小码间干扰,大大降低接收端信号的误码率。最小均方误差( LMS) 算法能有效降低码间干扰,但需要训练序列,因此影响传输效率。基于判决引导的最小均方误差( DDLMS) 算法不…

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

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

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

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