Java EE 6示例– Galleria

您是否一直想知道在哪里可以找到使用Java EE 6构建的良好端到端示例? 我有。 您在网上找到的大多数东西都是非常基础的,不能解决现实世界中的问题。 Java EE 6教程就是这样。 所有其他内容,例如Adam Bien所发表的大多数内容,都是范围非常狭窄的示例,也并没有为您提供更完整的解决方案。

因此,我很高兴偶然发现Vineet Reynolds做的一个更复杂的例子。 它被称为“ Java EE 6 Galleria ”,您可以从bitbucket下载源代码。 Vineet是为Arquillian项目做出贡献的软件工程师。 更具体地说,他贡献了一些错误修复程序,并处理了Arquillian Core的一些功能请求,以及Arquillian的GlassFish,WebLogic和Tomcat集成。 这是我第一次遇到他的名字的地方。 跟着Arquillian的家伙和他走近一点,直接把我带到了这个例子。 非常感谢Vineet在我初次尝试使其开始运行时所提供的帮助。 如果您喜欢在Twitter @VineetReynolds上关注他。

这里是有关它的背景的简要说明,也是关于在不同设置下运行它的一系列说明,并向您介绍了一些其他细节。 这是基本介绍。

关于回廊

该项目的高级描述如下:Java EE 6-Galleria是一个演示应用程序,演示了使用域驱动设计的Java EE项目中JSF 2.0和JPA 2.0的使用。 它被编写为Java EE 6中域驱动设计的样板。应用程序的域模型不是贫乏的,它由JPA实体组成。 然后,在用作应用程序层的会话EJB中使用这些实体。 使用Mojarra和PrimeFaces在表示层中使用JSF facelets。 该项目旨在通过使用JUnit 4中编写的单元测试和集成测试来实现全面覆盖。EJB和域模型的单元测试和集成测试依赖于EJB 3.1容器API。 表示层的集成测试依赖于Arquillian项目及其Drone扩展(用于执行Selenium测试)。

使用Java EE 6的域驱动设计

在Java EE 6中,将DDD作为一种体系结构方法是可行的,这主要是由于EJB 3.x中所做的更改以及JPA的引入。 EJB 3.x和JPA规范中所做的改进使得可以在Java EE 6中使用DDD对域和应用程序层进行建模。 这里的基本思想是设计一个应用程序,以确保将持久性服务注入到应用程序层中,并用于在应用程序层建立的事务上下文内访问/持久化实体。

域层

该应用程序现在包含四个域实体-用户,组,相册和照片,它们与逻辑数据模型中的JPA实体相同。

储存库层

在逻辑数据模型的顶部,您可以找到四个存储库-UserRepository,GroupRepository,AlbumRepository和PhotoRepository。 每个用于四个域实体之一。 即使DDD要求您仅具有聚合根目录的存储库,而不是所有域实体的存储库,其设计方式仍允许应用程序层访问“相册”和“照片”域实体,而不必通过UserRepository导航“相册”和“照片”。 存储库是具有无接口视图的无状态会话Bean,并使用Adam Bien发布的通用CRUD服务模式构建。

应用层

应用程序层公开表示层要使用的服务。 它还负责事务管理,同时还充当下一层的故障屏障。 应用程序层与域存储库和域对象进行协调,以实现公开服务的预期目标。 在某种程度上,该层等效于传统应用程序中的服务层。 应用程序层通过UserService,GroupService,AlbumService和PhotoService接口公开其服务,并且还负责在协调域层中的对象之间的动作之前,从上述层验证提供的域对象。 这是通过域对象上的JSR-303约束完成的。

看起来如何

这就是如果在最新的GlassFish 3.1.2上运行该示例时的样子。 想自己设置吗? 等待下一篇文章,或者自己尝试一下;)

下面,我们将直接使用最新的GlassFish 3.1.2,Hibernate和Derby来设置示例。

制备

让自己有一些配置的心情。 Grep最新的NetBeans 7.1 (Java EE版本已经包含所需的GlassFish 3.1.2 )并进行安装。 我还假设您在某个地方有一个不错的Java SDK 7 (也可以完成6个工作)。 根据开发策略,您还需要Mercurial Client和Maven。 至少Maven也包含在NetBeans中,所以…我的意思是…为什么使您的生活变得比现在更艰难? ;)

环境环境

关于环境的更多一些话。 此示例是为支持不同的环境而设置的。 从简单的“开发”环境开始,您还需要配置“测试”以及最后但并非最不重要的“生产”环境。 所有不同的环境都由Maven配置文件处理,因此您可能必须在接下来的几分钟内进行一些配置。

创建数据库实例

首先要做的就是确定将所有东西放在哪里。 这些示例使用了开箱即用的derby,因此您应该安装Java DB(JDK的一部分)或使用预先配置了NetBeans的GlassFish derby实例。 让我们在这里变得更加困难,并假设我们使用JDK随附的Java DB安装。 继续,打开CMD提示符并导航到%JAVA_HOME%文件夹,然后进一步向下db文件夹/ bin。 执行“ startNetWorkServer”脚本,并注意要启动的derby实例。 现在打开另一个CMD提示符,同时导航到db / bin文件夹并执行“ ij”脚本。 这应该带有提示“ ij>”。 现在输入以下连接字符串:

connect 'jdbc:derby://localhost:1527/GALLERIATEST;create=true';

此命令将您连接到derby实例,并创建GALLERIATEST数据库(如果尚不存在)。 Galleria示例使用了一个名为dbdeploy的方便的小工具作为数据库更改管理工具。 它使您可以对物理数据库模型进行增量更新,并在变更日志表中对其进行跟踪。 (有关更多信息,请参阅本系列后面的内容)。 您必须创建更改日志表:

CREATE TABLE changelog (change_number DECIMAL(22,0) NOT NULL,complete_dt TIMESTAMP NOT NULL,applied_by VARCHAR(100) NOT NULL,description VARCHAR(500) NOT NULL
);ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number);

您只需在connect语句中更改数据库名称,即可针对所需的任何其他实例(生产等)重做这些步骤。 并且不要忘记在每个实例中创建更改日志表。

如果您不喜欢这种方法。 启动NetBeans,切换到“服务”选项卡,选择“新建连接”,并添加一个新的Java DB网络连接,其主机为:localhost,端口为:1527,数据库为:GALLERIATEST; create = true。 将用户名和密码都设置为“ APP”,然后单击“测试连接”。 选择APP作为新数据库的架构。 您完成了!

创建GlassFish域

我们正在从最新的GlassFish运行此程序。 现在要做的第一件事是创建一个新域。 导航到您的GlassFish安装目录并转到glassfish3 / bin并执行以下命令:

asadmin create-domain --portbase 10000 --nopassword test-domain

这会为您创建一个新的测试域。 现在,导航到该域文件夹(“ glassfish3 / glassfish / domains / test-domain”)并打开config / domain.xml文件。

现在,我们将创建的derby数据库作为连接池添加到您新创建的GlassFish域。 导航到<resources>元素,并在最后一个</ jdbc-connection-pool>元素下面添加以下连接池和jdbc-resource:

<jdbc-connection-pool driver-classname="" datasource-classname="org.apache.derby.jdbc.ClientDataSource40" res-type="javax.sql.DataSource" description="" name="GalleriaPool" ping="true"><property name="User" value="APP"></property><property name="DatabaseName" value="GALLERIATEST"></property><property name="RetrieveMessageText" value="true"></property><property name="Password" value="APP"></property><property name="ServerName" value="localhost"></property><property name="Ssl" value="off"></property><property name="SecurityMechanism" value="4"></property><property name="TraceFileAppend" value="false"></property><property name="TraceLevel" value="-1"></property><property name="PortNumber" value="1527"></property><property name="LoginTimeout" value="0"></property></jdbc-connection-pool><jdbc-resource pool-name="GalleriaPool" description="" jndi-name="jdbc/galleriaDS"></jdbc-resource>

现在,找到:<config name =“ server-config”>元素,并在其中寻找最后一个<resource-ref条目。 在此添加以下行:

<resource-ref ref="jdbc/galleriaDS"></resource-ref>

在我们准备启动实例之前,要做的最后一件事。 我们需要为Galleria示例添加JDBC领域。 再次,找到<config name =“ server-config”>并在其中查找</ auth-realm>。 在此下面,放置以下内容:

<auth-realm classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm" name="GalleriaRealm"><property name="jaas-context" value="jdbcRealm"></property><property name="encoding" value="Hex"></property><property name="password-column" value="PASSWORD"></property><property name="datasource-jndi" value="jdbc/galleriaDS"></property><property name="group-table" value="USERS_GROUPS"></property><property name="charset" value="UTF-8"></property><property name="user-table" value="USERS"></property><property name="group-name-column" value="GROUPID"></property><property name="digest-algorithm" value="SHA-512"></property><property name="user-name-column" value="USERID"></property></auth-realm>

确保不要将新领域置于default-config下。 这是行不通的。 精细。 让我们获取资源:)

获取源代码并在NetBeans中打开它

Vineet在bitbucket.org上托管了Galleria示例。 因此,您必须去那里并访问java-ee-6-galleria项目。 您可以通过三种方式将源带到本地HDD。 通过hg命令行:

hg clone https://bitbucket.org/VineetReynolds/java-ee-6-galleria

或通过网站下载(右上方的“获取资源”)或直接通过NetBeans。 对于第一个和第三个选项,您的操作系统需要一个Mercurial客户端。 我正在Windows下使用TortoiseHg 。 在执行以下操作之前,您应该已经安装了NetBeans并对其进行了配置 。 让我们在这里尝试最后一种选择。 选择“团队>克隆其他”。 输入存储库URL,并保留用户/密码为空。 单击两次“下一步”(我们不需要更改默认路径;),然后选择一个父目录以将其放入其中。单击“完成”,然后让Mercurial客户端执行工作。 完成后,要求您打开找到的项目。 该外观应类似于右侧的图片。 如果遇到连接问题,请确保相应地更新代理设置。

如果尝试构建项目,则会遇到麻烦。 它仍然缺少一些我们接下来要做的配置。

添加开发配置文件

接下来是在Galleria-ejb项目的Maven pom.xml中添加一些内容。 打开它并向下滚动到<profiles>部分。 您会找到两个(声纳和生产)。 我们将通过在开发配置文件中添加以下几行来添加开发配置文件(确保将GlassFish路径调整为您的环境):

<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<galleria.derby.testInstance.jdbcUrl>jdbc:derby://localhost:1527/GALLERIATEST</galleria.derby.testInstance.jdbcUrl>
<galleria.derby.testInstance.user>APP</galleria.derby.testInstance.user>
<galleria.derby.testInstance.password>APP</galleria.derby.testInstance.password>
<galleria.glassfish.testDomain.user>admin</galleria.glassfish.testDomain.user>
<galleria.glassfish.testDomain.passwordFile>D:/glassfish-3.1.2-b22/glassfish3/glassfish/domains/test-domain/config/local-password</galleria.glassfish.testDomain.passwordFile>
<galleria.glassfish.testDomain.glassfishDirectory>D:/glassfish-3.1.2-b22/glassfish3/glassfish/</galleria.glassfish.testDomain.glassfishDirectory>
<galleria.glassfish.testDomain.domainName>test-domain</galleria.glassfish.testDomain.domainName>
<galleria.glassfish.testDomain.adminPort>10048</galleria.glassfish.testDomain.adminPort>
<galleria.glassfish.testDomain.httpPort>10080</galleria.glassfish.testDomain.httpPort>
<galleria.glassfish.testDomain.httpsPort>10081</galleria.glassfish.testDomain.httpsPort>
</properties>
</profile>

好。 如您所见,这里定义了一些东西。 并且默认情况下激活配置文件。 而已。 目前。

测试ejb-Galleria项目

让我们尝试在ejb-Galleria项目中运行测试用例。 右键单击它,然后发出“ clean and build”。跟随控制台输出以查看实际发生的情况。 我们将在下一篇文章中对此做进一步调查。 今天,我们只是为了确保您以正确的方式设置所有设置。 它应该以以下内容结束:

Tests run: 49, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

那是“绿色标准” :-)恭喜!

构建和部署项目

现在转到NetBeans“工具>选项>其他> Maven”,然后选中以下框:“跳过测试以查找与测试没有直接关系的任何构建执行”。 返回主窗口,右键单击Galleria项目,然后进行清洁并在此处构建。

Reactor Summary:Galleria ................................. SUCCESS [0.431s]
galleria-ejb ............................. SUCCESS [5.302s]
galleria-jsf ............................. SUCCESS [4.486s]
Galleria EAR ............................. SUCCESS [1.308s]
------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------
Total time: 11.842s

精细。 现在让我们启动GlassFish域。 切换到GlassFish安装并找到glassfish3 / bin文件夹。 在此处打开命令行提示符并运行:

asadmin start-domain test-domain

您可以看到域正在启动。 现在打开浏览器并导航到http:// localhost:10048 / 。 几秒钟后,这将向您显示GlassFish服务器的管理控制台。 现在您需要安装Hibernate。 选择“更新工具”(左下方),然后切换到“可用加载项”选项卡。 选择“休眠”,然后单击“安装”(右上角)。 安装服务器后,请停止服务器,然后使用上述命令重新启动服务器。 再次打开管理控制台,然后单击“应用程序”。 单击顶部的小“部署”按钮,然后浏览至“ java-ee-6-galleria / galleria-ear / target / galleria-ear-0.0.1-SNAPSHOT.ear”。 单击“确定”(右上角)。 几秒钟后您就完成了。 现在切换到http:// localhost:10080 / Galleria / ,您将看到欢迎屏幕。 恭喜你 您在GlassFish上设置了Galleria示例! 注册,登录并使用该应用程序!

该系列的下一部分将带您深入了解应用程序的细节。 我将介绍测试和总体概念。 我们还将在以后的文章中同时更改JPA提供程序和数据库。

是否想知道在最新的WebLogic 12c上进行安装和运行需要什么? 继续阅读!

参考: Java EE 6示例– Galleria –第1部分和Java EE 6示例–在GlassFish 3.1.2上运行Galleria – JCG合作伙伴提供的 第2部分   Markus Eisele在Enterprise Software Development with Java博客上。


翻译自: https://www.javacodegeeks.com/2012/03/java-ee-6-example-galleria.html

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

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

相关文章

如何在Jetty中使用SPDY

SPDY是Google提出的一种新协议&#xff0c;是针对网络的新协议。 SPDY与HTTP兼容&#xff0c;但尝试通过压缩&#xff0c;多路复用和优先级降低网页负载。准确地说&#xff0c;快速的目标是&#xff1a;&#xff08; http://dev.chromium.org/spdy/spdy-whitepaper &#xff09…

虐杀外星人java,逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人

逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人2016-10-17 10:45:58来源&#xff1a;游戏下载编辑&#xff1a;小年青评论(0)广大的小伙伴都有看过许多外星人企图入侵毁灭地球的电影&#xff0c;已此为题材而开发的游戏也不在少数。近日泛欧洲游戏信息组织又为一款该种题材…

Android之仿微信图片选择器

先上效果图。第一张图显示的是“相机”文件夹中的所有图片&#xff1b;通过点击多张图片可以到第二张图所示的效果&#xff08;被选择的图片会变暗&#xff0c;同时选择按钮变亮&#xff09;&#xff1b;点击最下面的那一栏可以到第三张图所示的效果&#xff08;显示手机中所有…

loss function

什么是loss? loss: loss是我们用来对模型满意程度的指标。loss设计的原则是&#xff1a;模型越好loss越低&#xff0c;模型越差loss越高&#xff0c;但也有过拟合的情况。     loss function: 在分类问题中&#xff0c;输入样本经过含权重矩阵θ的模型后会得出关于各个类别…

oracle查询表的id,oracle 查看所有用户及密码 实现Oracle查询用户所有表

1、oracle 查看所有用户及密码SQL> select username from dba_users;2、 实现Oracle查询用户所有表下面为您介绍的语句用于实现Oracle查询用户所有表&#xff0c;如果您对oracle查询方面感兴趣的话&#xff0c;不妨一看。select * from all_tab_comments-- 查询所有用户的表…

FindBugs和JSR-305

假设那组开发人员在大型项目的各个部分上并行工作–一些开发人员在进行服务实现&#xff0c;而其他开发人员在使用该服务的代码。 考虑到API的假设&#xff0c;两个小组都同意服务API&#xff0c;并开始单独工作。 您认为这个故事会有幸福的结局吗&#xff1f; 好吧&#xff0c…

什么是Akka?

在深入研究什么是Akka之前&#xff0c;让我们退后一步来了解并发编程的概念在应用程序开发世界中是如何演变的。 应用程序已经从大型的整体程序演变为面向对象的模型。 随着Java EE和Spring框架的出现&#xff0c;应用程序设计演变为更多的基于流程或任务的设计模型。 EJB或Poj…

Unity3d 实现顶点动画

在今年GDC上发现一个非常有趣的演讲&#xff0c;叫做Animating With Math&#xff0c;遂实现之&#xff0c;是讲述顶点shader动画的&#xff0c;举了几个经典的例子&#xff0c;但是讲者并没有给代码&#xff0c;而是像虚幻引擎那样的节点&#xff0c;这样更加清楚明了之前博主…

windows2012同步linux时间,Windows server2012时间同步NTP配置

遇到经常服务器时间无法同步&#xff0c;可以自己建立一台时间同步服务器&#xff0c;NTP配置如下&#xff1a;一、服务端配置 (Ntp服务器&#xff0c;客户端将根据这台服务器的时间进行同步)1、微软键R键&#xff0c;进入“运行”&#xff0c;输入“regedit”,进入注册表2、 H…

Java EE 6示例– Galleria第2部分

您可能在最后一篇Java EE 6 Galleria示例帖子中关注了我。 第一个是基本介绍。 第二个是关于在最新的GlassFish上运行它。 有人提到RedHat&#xff0c;我们应该研究将这个示例从GlassFish中移除。 很好;&#xff09;感谢您的好主意。 这正是我们今天要做的。 我将把Galleria示例…

与reCAPTCHA的Spring集成

有时我们只需要CAPTCHA &#xff0c;这是一个可悲的事实。 今天&#xff0c;我们将学习如何与reCAPTCHA集成。 因为主题本身并不是特别有趣和高级&#xff0c;所以我们将通过使用Spring Integration处理低级细节来过度设计&#xff08;&#xff1f;&#xff09;。 Google决定使…

《机器学习基石》---感知机算法

1 推导感知机模型 基本思想是&#xff0c;把特征的线性加权值作为一个分数&#xff0c;根据这个分数与一个门限值的关系来进行分类&#xff1a; 我们加一个特征x0等于1&#xff0c;门限值就可以放到w里面去&#xff0c;得到更简单的形式&#xff1a; 这就是感知机模型&#xff…

Python之路【第八篇】:堡垒机实例以及数据库操作

Python之路【第八篇】&#xff1a;堡垒机实例以及数据库操作 堡垒机前戏 开发堡垒机之前&#xff0c;先来学习Python的paramiko模块&#xff0c;该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接&#xff1a; 12…

ADF BC:创建绑定到业务组件的UI表

在此示例中&#xff0c;我们将展示如何创建绑定到业务组件的简单UI表&#xff08;af&#xff1a;table&#xff09;。 我再次尝试使用简单的标准在网上进行搜索&#xff1a; “如何创建绑定到业务组件ADF 11g的af&#xff1a;table” 我必须承认我没有得到我想要的答案。 信息…

MyBaits 错误分析

错误原因&#xff1a;在DAO的映射文件中&#xff0c;在映射标签中的type类型写成DAO类了&#xff0c;应该写成javaBean转载于:https://www.cnblogs.com/shuaiandjun/p/5428847.html

斑马打印机linux驱动安装教程,linux-Zebra软件包的基本安装与配置

Zebra是一个路由软件包&#xff0c;提供基于TCP/IP路由服务&#xff0c;支持RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4,和 BGP-4等众多路由协议。Zebra还支持BGP特性路由反射器(Route Reflector)。除了传统的 IPv4路由协议&#xff0c;Zebra也支持IPv6路由协议。如果运行的…

Java 7对抑制异常的支持

在JDK 7中 &#xff0c;向Throwable类&#xff08; Exception和Error类的父类&#xff09;添加了一个新的构造函数和两个新方法。 添加了新的构造函数和两个新方法以支持“抑制的异常”&#xff08;不要与吞咽或忽略异常的不良做法相混淆&#xff09;。 在本文中&#xff0c;我…

易于使用的单位和集成代码

此示例说明如何使用Maven和Sonar生成单元测试和集成测试的覆盖率。 它使用非常简单的技术&#xff0c;只需10-15分钟即可在任何现有的Maven构建中运行。 它可用于单元&#xff0c;集成&#xff0c;ATDD或任何其他类型的测试套件。 覆盖率结果显示在Sonar中。 有什么事吗&#x…

Ubuntu 16.04 安装 VMware-Workstation-12

以前一直使用 Ubuntu Virtaulbox &#xff0c;最近测试了 VMware-Workstation-9,性能超过 Virtaulbox-4.2.x,下面是详细步骤:1 首先准备一个Ubuntu 系统 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04 LTS Release: 16.04 …

SSH实战 · 唯唯乐购项目(中)

用户模块三&#xff1a;一级分类的查询创建一级分类表并导入基本数据CREATE TABLE category (cid int(11) NOT NULL AUTO_INCREMENT,cname varchar(255) DEFAULT NULL,PRIMARY KEY (cid)) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8;建包及相应的类:com.weiwei.shoppi…