使用Maven配置JBoss / Wildfly数据源

大多数Java EE应用程序在其业务逻辑中使用数据库访问,因此开发人员经常面临在应用程序服务器中配置驱动程序和数据库连接属性的需求。 在本文中,我们将使用Maven为JBoss / Wildfly和Postgre数据库自动化该任务。 这项工作是根据我从以前的魔兽拍卖批量应用世界岗位 。

Maven配置

首先,将以下内容添加到我们的pom.xml

Wildfly Maven插件

org.wildfly.pluginswildfly-maven-plugin1.0.2.Finalfalseorg.postgresqlpostgresql9.3-1102-jdbc41

我们将使用Wildfly Maven插件在应用程序服务器中使用命令执行脚本。 请注意,我们还向Postgre驱动程序添加了一个依赖项。 这是供Maven下载依赖项,因为稍后我们将需要它来将其添加到服务器。 还有一个${cli.file}属性将分配给配置文件。 这是为了指示我们要执行哪个脚本。

让我们还将以下内容添加到pom.xml

Maven资源插件

org.apache.maven.pluginsmaven-resources-plugin2.6copy-resourcesprocess-resourcescopy-resources${basedir}/target/scriptssrc/main/resources/scriptstrue${basedir}/src/main/resources/configuration.properties 

使用Resources Maven插件,我们将过滤src/main/resources/scripts包含的脚本文件,并将它们替换为${basedir}/src/main/resources/configuration.properties文件中包含的属性。

最后,使用我们要运行的脚本将一些Maven配置文件添加到pom.xml

Maven个人资料

install-driverwildfly-install-postgre-driver.cliremove-driverwildfly-remove-postgre-driver.cliinstall-wow-auctionswow-auctions-install.cliremove-wow-auctionswow-auctions-remove.cli

Wildfly脚本文件

添加驱动

带有用于添加驱动程序的命令的脚本:

wildfly-install-postgre-driver.cli

# Connect to Wildfly instance
connect# Create Oracle JDBC Driver Module
# If the module already exists, Wildfly will output a message saying that the module already exists and the script exits.
module add \--name=org.postgre \--resources=${settings.localRepository}/org/postgresql/postgresql/9.3-1102-jdbc41/postgresql-9.3-1102-jdbc41.jar \--dependencies=javax.api,javax.transaction.api# Add Driver Properties
/subsystem=datasources/jdbc-driver=postgre: \add( \driver-name="postgre", \driver-module-name="org.postgre")

数据库驱动程序作为模块添加到Wildfly 。 在这种情况下,驱动程序可广泛用于服务器中部署的所有应用程序。 使用${settings.localRepository}我们指向下载到本地Maven存储库的数据库驱动程序jar。 还记得我们添加到Wildfly Maven插件中的依赖吗? 当您运行插件时,将下载驱动程序并将其添加到服务器。 现在,要运行我们执行的脚本(您需要运行应用程序服务器):

mvn process-resources wildfly:execute-commands -P "install-driver"

需要process-resources生命周期来替换脚本文件中的属性。 在我的情况下, ${settings.localRepository}/Users/radcortez/.m3/repository/代替。 检查target/scripts文件夹。 运行命令后,您应该在Maven日志中看到以下输出:

{"outcome" => "success"}

在服务器上:

INFO  [org.jboss.as.connector.subsystems.datasources] (management-handler-thread - 4) JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-4) JBAS010417: Started Driver service with driver-name = postgre

wildfly-删除-postgre-driver.cli

# Connect to Wildfly instance
connectif (outcome == success) of /subsystem=datasources/jdbc-driver=postgre:read-attribute(name=driver-name)# Remove Driver/subsystem=datasources/jdbc-driver=postgre:removeend-if# Remove Oracle JDBC Driver Module
module remove --name=org.postgre

该脚本用于从应用程序服务器中删除驱动程序。 执行mvn wildfly:execute-commands -P "remove-driver" 。 如果您之前已经执行过命令,则不需要process-resources ,除非您更改了脚本。

添加数据源

wow-auctions-install.cli

带有用于添加数据源的命令的脚本:

wow-auctions-install.cli

# Connect to Wildfly instance
connect# Create Datasource
/subsystem=datasources/data-source=WowAuctionsDS: \add( \jndi-name="${datasource.jndi}", \driver-name=postgre, \connection-url="${datasource.connection}", \user-name="${datasource.user}", \password="${datasource.password}")/subsystem=ee/service=default-bindings:write-attribute(name="datasource", value="${datasource.jndi}")

我们还需要一个文件来定义属性:

configuration.properties

datasource.jndi=java:/datasources/WowAuctionsDS
datasource.connection=jdbc:postgresql://localhost:5432/wowauctions
datasource.user=wowauctions
datasource.password=wowauctions

默认的Java EE 7数据源

Java EE 7指定容器应提供默认的数据源。 与其在应用程序中定义JNDI名称java:/datasources/WowAuctionsDS将新创建的数据源指向具有/subsystem=ee/service=default-bindings:write-attribute(name="datasource", value="${datasource.jndi}") 。 这样,我们无需在应用程序中进行任何更改。 使用mvn wildfly:execute-commands -P "install-wow-auctions"执行脚本。 您应该获得以下Maven输出:

org.jboss.as.cli.impl.CommandContextImpl printLine
INFO: {"outcome" => "success"}
{"outcome" => "success"}
org.jboss.as.cli.impl.CommandContextImpl printLine
INFO: {"outcome" => "success"}
{"outcome" => "success"}

在服务器上:

INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source

wow-auctions-remove.cli

# Connect to Wildfly instance
connect# Remove Datasources
/subsystem=datasources/data-source=WowAuctionsDS:remove/subsystem=ee/service=default-bindings:write-attribute(name="datasource", value="java:jboss/datasources/ExampleDS")

这是用于删除数据源并还原Java EE 7默认数据源的脚本。 通过执行mvn wildfly:execute-commands -P "remove-wow-auctions"运行它

结论

这篇文章演示了如何自动向Wildfly实例添加/删除驱动程序以及如何添加/删除数据源。 如果要在数据库之间切换,或者要从头开始配置服务器,这将很有用。 考虑一下CI环境。 这些脚本也可以轻松调整为其他驱动程序。

  • 您可以从使用此设置的WoW Auctions Github存储库中获取代码。

请享用!

翻译自: https://www.javacodegeeks.com/2014/10/configure-jboss-wildfly-datasource-with-maven.html

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

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

相关文章

控件注册 - 利用资源文件将dll、ocx打包进exe文件(转)

很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样。 现在介绍一种使用资源文件,将…

Canvas-图片旋转

Canvas-图片旋转 众所周知canvas是位图,你可以在里面渲染你要的东西,不过你只能操作canvas的属性来进行编辑。就是说你并不能操作画进canvas的东西,例如我在canvas里添加一幅画,我现在想将那幅画移动10px,我们并不能直…

在嵌入式Neo4j中使用Neo4j浏览器

有时候,您有一个应用程序以嵌入式模式使用Neo4j,但还需要使用Neo4j Web浏览器来处理图形。 由于一次最多只能从一个进程访问数据库,因此在嵌入式Neo4j应用程序运行时尝试启动Neo4j服务器将无法工作。 WrappingNeoServerBootstrapper尽管已被…

CSS3实现多页签图片缩放切换效果

多页签切换效果,图片缩放,鼠标移动到图片上后显示文字内容等等,效果很集中呐 截图如下: 下载地址:http://www.lanrenzhijia.com/js/css3/2012/0718/602.html 预览地址:http://www.lanrenzhijia.com/yulan/2…

正则表达式学习笔记

该笔记内容通过《Learn regular expressions in about 55 minutes》整理得到。 文章链接:https://qntm.org/files/re/re.html 其中文翻译很多,中文名叫:55分钟学会正则表达式。 实际上我也算过了,55分钟实在不太可能,也…

清洁单元测试图案–演示幻灯片

我有机会在2014年GDG DevFestKarlsruhe会议上谈论“清洁单元测试模式”。 感谢组织者邀请我,也感谢所有听我讲话的人。 如所承诺的,我为那些想看一下我在演讲中没有讲到的其他幻灯片的人分享了演示文稿: 清洁单元测试图案 JUnit测试并不像看…

“取反”运算符

“取反”运算符转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/24/3845558.html

Angular使用总结 --- 如何正确的操作DOM

无奈接手了一个旧项目,上一个老哥在Angular项目中大量使用了JQuery来操作DOM,真的是太不讲究了。那么如何优雅的使用Angular的方式来操作DOM呢? 获取元素 1、ElementRef --- A wrapper around a native element inside of a View. 在组件…

Hibernate Collection乐观锁定

介绍 Hibernate提供了一种乐观的锁定机制 ,即使长时间通话也可以防止丢失更新 。 结合实体存储,跨越多个用户请求(扩展的持久性上下文或分离的实体),Hibernate可以保证应用程序级的可重复读取 。 脏检查机制检测实体状…

非首屏图片延时加载

目标 减少资源加载可以明显的优化页面加载的速度,所以可以减少页面载入时立即下载的图片的数量,以提高页面加载速度,其他的图片在需要的时候再进行加载。 思路 想要实现以上的目标,有几个地方需要思考。 1、如何判断哪些图片需要…

具有链接资源的Spring RestTemplate

Spring Data REST是一个了不起的项目,它提供了一些机制来将基于Spring Data的存储库中的资源公开为REST资源。 使用链接资源公开服务 考虑两个简单的基于JPA的实体,课程和教师: Entity Table(name "teachers") public class Tea…

POJ 1521 Entropy

求哈夫曼树的平均码长,用优先队列来写,先记录某个字符在字符串里出现的次数,然后放入 队列。依次取出第一小和第二小的数,将两个数相加,构成新的虚拟结点,放入队列中。 /*Accepted 196K 0MS C …

事件处理详解

前言 本文大概整理下绑定事件的几种方式,兼容IE8- 的方式(如果需要的话),事件委托,阻止传播,取消默认行为,event对象等。 之前做的多是手机端页面,监听事件也一直是 addEventListene…

用户会话,数据控件和AM池

最近,有人问我有关应用程序模块池的有趣问题。 众所周知,AM池包含用户会话引用的应用程序模块实例,这允许会话在后续请求时从池中获取完全相同的AM实例。 如果应用程序中有多个根应用程序模块,那么每个模块都将拥有自己的AM池&am…

对Group_concaT函数利用剖析 (转)

作者:晓华 开篇介绍 在FLYH4T大哥的“Mysql5注射技巧总结”一文中介绍了通过使用“information_schema”库实现遍历猜解库名表名以及字段名的技术,解决了一些以前使用工具无法猜解到的库名表名以及字段名的问题,提高了注射的效率。关于此文的…

用 CSS 实现元素垂直居中,有哪些好的方案?

DIV居中的经典方法 1. 实现DIV水平居中 设置DIV的宽高,使用margin设置边距0 auto,CSS自动算出左右边距,使得DIV居中。 1 div{ 2 width: 100px; 3 height: 100px; 4 margin: 0 auto; 5 } 缺点:需要设置div的宽度 2.…

使用wss和HTTPS / TLS保护WebSocket的安全

是这个博客的第50条提示,是的! 技术提示#49说明了如何使用用户名/密码和Servlet安全机制保护WebSocket的安全。 本技术提示将说明如何在WildFly上使用HTTPS / TLS保护WebSocket。 让我们开始吧! 创建一个新的密钥库&#xff1a…

时钟同步及其应用(接上一篇)

在linux下做的时钟同步的工作终于暂时告一段落了。 前面简单的做了客户端和服务器端的同步,在基于时间同步的机制上,将系统的1s的时间划分多个时槽。由于此时间同步应用在分布式系统中,涉及到多个客户端和服务器通信的问题,因此划…

Java性能调优调查结果(第二部分)

这是系列文章的第二篇,我们将分析2014年10月进行的性能调整调查的结果。如果您尚未阅读第一部分,我们建议从此处开始 。 第二部分将重点监视Java应用程序的性能问题。 特别是,我们尝试回答以下问题: 人们如何发现性能问题&#x…

HDU 2094 产生冠军

判断顶点入度是否唯一即可。如果入度为0的节点只有一个&#xff0c;输出Yes&#xff0c;否则输出No。 代码&#xff1a; 1 #include<iostream>2 #include<cstring>3 4 using namespace std;5 6 int len;7 int map[1001][1001];8 char name[1001][100];9 10 int fu…