java ee maven_针对新手的Java EE7和Maven项目–第7部分

java ee maven

从前面的部分恢复

第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分

在上一篇文章(第6章)中,我们发现了如何使用Arquillian和Wildfly 8.1进行JPA2域模型的单元测试。在上一篇文章中,我们做出了一个简单的配置决定,我们使用了与Wildfly 8.1捆绑在一起的内部H2数据库配置的数据源(称为ExampleDS)。 但是真正的DBMS呢? 在这篇文章中,我们将扩展以前的工作,使用相同的原理,并

  • 在我们的本地主机上对正在运行的PostgreSQL进行测试
  • 使用Arquillian Offer的ShrinkWrap APi的一些非常好的功能。

先决条件

您需要在本地安装PostgreSQL RBDMS ,我的示例基于在localhost上运行的服务器,数据库名称为papodb

添加更多依赖

最终,我们需要在样本父代(pom)中添加更多依赖项。 其中一些与Arquillian有关,特别是ShrinkWrap Resolvers功能(稍后会详细介绍)。

因此,我们需要将其添加到父pom中。 xml如下:

<shrinkwrap.bom-version>2.1.1</shrinkwrap.bom-version><!-- jbdc drivers --><postgreslq.version>9.1-901-1.jdbc4</postgreslq.version>
...<!-- shrinkwrap BOM-->
<dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-bom</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type><scope>import</scope></dependency><!-- shrinkwrap dependency chain--><dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type></dependency><!-- arquillian itself--><dependency><groupId>org.jboss.arquillian</groupId><artifactId>arquillian-bom</artifactId><version>${arquillian-version}</version><scope>import</scope><type>pom</type></dependency><!-- the JDBC driver for postgresql --><dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId><version>${postgreslq.version}</version></dependency>

有关上述更改的一些注意事项:

  • 为了避免依赖项之间的任何潜在冲突,请确保在Arquillian BOM之上定义ShrinkWrap BOM

现在在sample-services(pom.xml)上 ,托管的项目是简单测试,我们需要引用其中一些依赖项。

<dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><scope>test</scope><type>pom</type></dependency><dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId></dependency>

重组我们的测试代码

在前面的示例中,我们的测试很简单,我们仅使用了特定的测试配置。 由于我们将测试应用程序打包为jar,因此生成了单个test-persistence.xml文件,而没有web.xml文件。 现在,我们将测试存档升级为战争。 当涉及捆绑和部署企业应用程序时,JavaEE7中的战争包装已成为第一手公民。 与前面的示例的主要区别在于,我们希望保留以前的设置,这意味着在wildfly上使用内部H2进行测试,以及对真实的RDBMS服务器进行新的设置测试。 因此,我们需要维护2套配置文件,并利用Maven配置文件功能,根据我们的模式对它们进行相应的打包。 如果您不熟悉Maven,请确保查看配置文件的概念。

为每个配置文件添加单独的配置

因此,我们的测试资源(请注意这些资源位于src / test / resources下)如下所示。

CapturFiles_8

两种情况都有差异。 h2的test-persistence.xml指向ExampleDS数据源,其中postgre上的那个指向我们在web.xml中定义的新数据源! 请从下面的git链接中查看实际代码。

这就是我们在web.xml中定义数据源的方式

CapturFiles_10

以上注意事项

  • JNDI名称中的标准命名java:jboss / datasources / datasourceName
  • 一旦读取了web.xml文件的内容,应用服务器就会自动部署和配置新的数据源。

这是我们的persistence.xml

CapturFiles_9
以上注意事项

  • 确保2个JNDI条目在数据源定义和persistence.xml中都相同
  • 当然,用于postGresql的Hibernate方言是不同的
  • 高亮显示的行是Wildfly 8.1所必需的特殊设置,如果您要一口气部署它,则需要设置数据源,jdbc驱动程序和代码。 它提示应用程序服务器首先初始化和配置数据源,然后初始化EntityManager。 如果您已经部署/配置了数据源,则不需要此设置。

在我们的pom中定义配置文件

在样本服务pom.xml中,添加以下部分。 这是我们的配置文件定义。

<profiles><profile><id>h2</id><build><testResources<testResource><directory>/resources-h2</directory><includes><include>**/*</include></includes></testResource></testResources></build></profile><profile><id>postgre</id><build><testResources><testResource><directory>/resources-postgre</directory><includes><include>**/*</include></includes></testResource></testResources></build></profile></profiles>

根据激活的配置文件,我们指示Maven在特定的子文件夹下包括并使用xml文件。 因此,如果我们应用以下命令:

mvn clean test -Pdb2

然后,maven将在resource-h2文件夹下包含persistence.xml和web.xml,我们的测试将使用内部的H2 DB。 如果我们发出:

mvn clean test -Ppostgre

然后,我们的测试Web存档将与本地Postgresql服务器专用的数据源定义一起打包。

编写一个简单的测试

最终,我们新的JUnit测试与之前的测试没有太大不同。 这是指示一些关键点的屏幕截图。

CapturFiles_11  

上面代码的一些注释:

  • Junit测试和基本注释与上一篇文章相同。
  • init()方法还是相同的,我们只是创建并保留一个新的SimpleUser实体
  • 第一个主要区别是ShrinkWrap Api的使用,它利用了pom中的测试依赖项,并且我们可以将JBDC驱动程序定位为jar。 找到ShrinkWrap之后,请确保将其与其他资源和代码一起打包在我们的test.war中。
  • 尽管仅打包jdbc驱动程序还不够,为了使其正常工作,我们需要在服务器中存在(配置)数据源。 我们希望这是自动的,这意味着我们不想在测试Wildfly服务器上进行任何预配置。 我们利用此功能在web.xml上定义数据源。 (在代码中将其打开)。

CapturFiles_12

  • 一旦扫描了web.xml,应用程序服务器就会选择该条目,并将在java:jboss / datasources / testpostgre名称下配置一个数据源。
  • 因此,我们将驱动程序,数据源定义捆绑在一起,我们有一个persistence.xml指向正确的数据源。 我们准备测试
  • 我们的测试方法与以前的测试方法相似。

我们为H2档案修改了一些资源,以便每次都打包相同的战争结构。 这意味着,如果我们使用-Ph2配置文件运行测试,则包含的web.xml为空,因为实际上我们不需要在此定义数据源,因为该数据源已由Wildfly部署。 但是persistence.xml是不同的,因为在一种情况下,定义的方言特定于H2,而在另一种情况下,所定义的方言特定于Postgre。

您可以遵循相同的原理并添加一个新的资源子文件夹,为另一个RDBMS(例如MySQL)配置数据源,添加适当的代码以获取驱动程序并将其打包。

  • 您可以在此bitbucket repo-tag上获得此帖子的代码 。

资源资源

  • Shrinkwrap解析器API页面 (此强大API的许多漂亮示例)
  • 定义Wildfly 8.1的数据源

翻译自: https://www.javacodegeeks.com/2014/07/java-ee7-and-maven-project-for-newbies-part-7.html

java ee maven

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

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

相关文章

法在计算机课程中的应用,任务驱动法在计算机办公课程中的应用

摘 要&#xff1a;一体化教学模式中的任务驱动法是建立在建构主义教育理论基础上的一种教学法。笔者结合任务驱动法在Word2010教学中的实施过程&#xff0c;对如何应用任务驱动法展开论述。关键词&#xff1a;任务驱动法 计算机办公课程 具体应用任务驱动法就是在教学过程中&am…

链表node中保存的是什么_Redis源码解析一 --链表结构

Redis源码剖析—链表结构1. redis中的链表在redis中链表的应用非常广泛&#xff0c;例如列表键的底层实现之一就是链表。而且&#xff0c;在redis中的链表结构被实现成为双向链表&#xff0c;因此&#xff0c;在头部和尾部进行的操作就会非常快。通过列表键的命令感受一下双向链…

python数据分析方法和命令_《利用Python进行数据分析》 —— (1)

《利用Python进行数据分析》 —— &#xff08;1&#xff09; Python的学习需要自主探索各种类型&#xff0c;函数和方法的文档。 2.1 Python解释器 在IPython&#xff08;Jupyter Qtconsole)上&#xff0c;可以通过%run命令执行文件中的代码 In [16]: %run hellow.py 1,2,3 10…

JDK 15中的确切绝对整数

JDK 15 Early Access Build b18向Math和StrictMath类引入了新方法&#xff0c;这些方法将在提供的值超出方法所支持的范围时抛出ArithmeticException &#xff0c;而不会发生溢出。 这些方法为Java中的“绝对值”概念带来了Math.addExact &#xff0c; Math.subtractExact和Mat…

浙江金融职业学院计算机一级,浙江金融职业学院全景-360度,720度,高清全景地图-expoon网展...

浙江金融职业学院基本信息&#xff1a;院校类型&#xff1a;财经类所在地&#xff1a;浙江学历层次&#xff1a;专科招办电话&#xff1a;0571-86739200、86739000、86739100电子邮箱 : zjfczs2008126.com通讯地址 : 浙江杭州市下沙高教园区东区学源街118号学校简介&#xff1a…

用python找对象_还在单身的你 Python教你如何脱单

程序员有女朋友&#xff1f;new一个就行。Python只要内存够&#xff0c;想new多少个对象都不是问题。由于行业环境的原因&#xff0c;程序员单身的确实多&#xff0c;这也是程序员的世纪难题。今天&#xff0c;不是给大家发对象&#xff0c;只教大家方法。今天教大家怎么用Pyth…

系统页面升级系统中_中交出行通勤班线系统全新升级!页面亮点功能说明

最近&#xff0c;中交出行上线了全新版本的通勤班线系统&#xff0c;乘客端定制班线首页及购票流程界面全新改版&#xff0c;车企后台也做了优化。一起来看看有哪些亮点吧&#xff01;首页、搜索结果页等&#xff0c;已绑定微信的老用户&#xff0c;无感知的自动登录。通勤班线…

医疗保健数据接口_应用的大数据:医疗保健的经济学

医疗保健数据接口这次我的标题不太挑衅&#xff0c;因为我的上一篇博客文章&#xff08;http://brianoneill.blogspot.com/2014/04/big-data-fixes-obamacare.html&#xff09;显然煽动了政治大战。 在本文中&#xff0c;我希望通过详细介绍大数据如何以无党派的方式帮助我们的…

计算机基础 在线测试,计算机基础知识在线测试答案.doc

文档介绍&#xff1a;节以下不属于计算机外部设备的是。蕿A.输入设备羇B.中央处理器和主存储器袅C.输出设备蝿D.外存储器芈答案关键:B肇题目2of100肁计算机系统中运行的程序、数据及相应的文档的集合称为。蒁A.主机肆B.软件系统***C.系统软件蒂D.应用软件衿答案关键:B腿题目3of…

mysql log_来吧,了解下mysql有哪些log

概述mysql里面有很多log&#xff0c;比如用于主从同步的bin_log&#xff0c;防止数据丢失的redo_log&#xff0c;慢查询日志slow_log等等redo logInnoDB有buffer pool(简称bp)。bp是数据库页面的缓存&#xff0c;对InnoDB的任何修改操作都会首先在bp的page上进行&#xff0c;然…

为什么jupyterlab运行程序的时候会自动停止_气象人的JupyterLab

上两篇文章Jupyterlab安装配置教程Jupyter多用户配置中讲了Jupyter的主要部署方法&#xff0c;老实说&#xff0c;对新手很不友好&#xff0c;我也不想再经历一次这样的过程&#xff0c;尤其是Basemap的安装。所以&#xff0c;咱直接打包个镜像吧。不得不说Docker真是个拯救了无…

计算机应用管理试题,学习管理系统中计算机应用试卷试题及答案.docx

★精品文档★管理系统中计算机应用试题及答案计算机应用是研究计算机应用于各个领域的理论、方法、技术和系统等&#xff0c;是计算机学科与其他学科相结合的边缘学科。下面给大家带来管理系统中计算机应用试题及答案&#xff0c;欢迎大家阅读。管理系统中计算机应用试题及答案…

mysql all_同样是MySQL的all privileges有啥不同?

db.* 和 . 上面的all privileges 有啥不一样。咱当兵的人&#xff0c;有啥不一样...(一起唱)首先安装MySQL启动rootpts/0 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm--2018-08-02 18:13:58-- http://repo.mysql.com/mysql-community-release-el7-…

bfc是什么_全面分析总结BFC原理及实践

前言 经常在面试中被问到“如何清除浮动&#xff1f;”、“为什么 overflow: hidden 可以清除浮动&#xff1f;”等等比较基础的问题。虽然这些题目案在各种写面试题的文章中都有提供答案&#xff0c;但这种教科书式的问答肯定不是我们的目的&#xff0c;与其记住答案不如彻底掌…

学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...

Part one 截屏我们在使用电脑的过程中&#xff0c;有时候会使用截屏功能。AltCtrlA诶&#xff1f;怎么不行&#xff1f;原来这是QQ特有的快捷键&#xff0c;如果不登录QQ的话&#xff0c;是使用不了的。那么我们就只能先登录QQ&#xff0c;然后再一步步的操作。那在没网的情况下…

使用Java 8.0进行类型安全的依赖注入

所以有时我真的很想念旧学校的依赖注入。 当Spring仍然“轻量级”时&#xff0c;我们很高兴地用“ 一天学习 ” Spring bean xml配置在application.xml文件中配置了所有bean。 缺点当然是类型安全性的损失。 我可以想到很多测试用例&#xff0c;它们的唯一目的是引导Spring配置…

mysql从库执行delete停止_MySQL主库大表执行delete语句,Ctrl+C具体发生了什么分析...

MySQL主库大表执行delete语句&#xff0c;CtrlC具体发生了什么分析1、查看表结构localhost.qt>show create table doctor_stats_backup\G*************************** 1. row ***************************Table: doctor_stats_backupCreate Table: CREATE TABLE doctor_stat…

python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...

有时候&#xff0c;有些网页不方便在电脑或者手机QQ打开&#xff0c;比如&#xff1a;想创建一个微信活动页面&#xff0c;在电脑或者QQ打开会导致某些功能失效&#xff0c;页面错版等情况&#xff0c;为了避免出现这种情况&#xff0c;其实我们只需让它只能在微信打开就可以了…

我的世界服务器设置op显示,我的世界设置op权限 | 手游网游页游攻略大全

发布时间&#xff1a;2017-08-19导读:不少我的世界腐竹都会收留一些OP帮助自己管理服务器,那么如果想取消OP的权限该如何操作呢?下面小编就来教教大家如何取消OP权限. 问:我的世界如何取消OP权限? 答:/deop 用户名,就是取消OP,/op 用户名 ...标签&#xff1a;我的世界 问答帮…

mysql 从库重新同步_mysql从库删除数据重新同步

1、查看slave状态show slave status\G2、停止slave状态&#xff0c;清除从库主从信息stop slave&#xff1b;reset slave;reset master;3、将从库已同步主库数据库删除DROP DATATBASE DBNAME;4、备份主数据库数据reset master; //先重置主库&#xff0c;再导出mysqldump -uuser…