jboss fuse 教程

在本文中,我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本。

我不一定会称其为最佳实践,但我一直有这样的想法:这种能力可能有用。 可能当我被迫使用xml来模拟命令式编程结构(例如使用Apache Ant时)时,我开始想要这个。

而且我发现这个想法在诸如Gradle或Vagrant之类的项目中得到了验证,在该项目中,一种完整的编程语言实际上是在变相中隐藏着,假装是特定于领域的语言或令人惊讶的灵活配置语法。

在展示如何在JBoss Fuse中使用MVEL时,我曾经谈论过类似的事情。
这次,我将限制自己,展示如何使用可以插入到原本为静态的xml文件中的小代码段,这种技巧在您需要执行简单的操作(例如替换字符串,算术或其他任何操作)的情况下可能会有用。想要避免为此编写Java类。

让我说,我这里没有发明任何新东西。 我只是在展示如何使用Apache Aries项目直接提供的功能,但是我并没有经常使用该功能。

目的是允许您编写如下代码段:

...<bean id="accountFactory" class="org.apache.aries.simple.AccountFactory">  <argument value="$[karaf.home.replaceAll("\\\\", "/")]">
</argument></bean>
...

您可以看到我们正在对环境变量的值调用java.lang.String.replaceAll()方法。

我们可以感谢Apache Aries Bluerpint JEXL Evaluator,它是Apache Aries Blueprint的扩展,它实现了“扩展” Aries Blueprint基本功能的自定义令牌处理器。

在此特定情况下,它将令牌插值委托给项目Apache JEXL来完成 。

JEXL,Java表达式语言,它只是一个向Java平台公开脚本功能的库。 它的作用不是唯一的,因为您可以通过对Javascript或Groovy的本机支持实现相同的功能。 但是由于已经编写了与Blueprint的集成,因此我们将使用它,因此我们可以在Apache Karaf或JBoss Fuse实例上直接使用它。

以下说明已在JBoss Fuse 6.2.1上得到验证:

# install JEXL bundle
install -s mvn:org.apache.commons/commons-jexl/2.1.1
# install JEXL Blueprint integration:
install -s mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.jexl.evaluator/1.0.0

这就是我们所需的全部准备工作,现在我们只需要在Bluerpint文件中使用正确的XSD版本1.2.0

xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0"

完成后,我们可以通过以下方式利用功能:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0" xsi:schemalocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"><ext:property-placeholder system-properties="override" evaluator="jexl" placeholder-prefix="$[" placeholder-suffix="]"><bean id="myString" class="java.lang.String"><argument value="1"></argument></bean><service interface="java.lang.CharSequence" ref="myString"><service-properties><entry key="osgi.jndi.service.name" value="$[karaf.home.toUpperCase()]___$[1+2]"></entry></service-properties></service>
</ext:property-placeholder></blueprint>

直接将该blueprint.xml复制到deploy/文件夹中,然后您可以从Karaf shell中检查那些内联脚本的动态调用实际上已经发生了!

JBossFuse:karaf@root> ls (id blueprint.xml) | grep osgi.jndi.service.name
osgi.jndi.service.name = /OPT/RH/JBOSS-FUSE-6.2.1.REDHAT-107___3

当您寻找一种快速的方法来创建动态配置时,这在某些情况下可能会很有用。

如果您可能有兴趣实施自定义评估程序,则需要提供以下接口:

  • https://github.com/apache/aries/blob/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ext/evaluator/PropertyEvaluator.java

这是您需要公开的服务示例,以便能够在您的<property-placeholder>节点中进行引用:

<service interface="org.apache.aries.blueprint.ext.evaluator.PropertyEvaluator"><service-properties><entry key="org.apache.aries.blueprint.ext.evaluator.name" value="jexl"></entry></service-properties><bean class="org.apache.aries.blueprint.jexl.evaluator.JexlPropertyEvaluator">
</bean></service>

翻译自: https://www.javacodegeeks.com/2016/05/jboss-fuse-dynamic-blueprint-files-jexl.html

jboss fuse 教程

jboss fuse 教程_JBoss Fuse:使用JEXL的动态蓝图文件相关推荐

  1. jboss fuse 教程_JBoss Fuse –使用MVEL将您的静态配置转换为动态模板

    jboss fuse 教程 最近,我重新发现了我已经忘记的JBoss Fuse功能,并且我认为其他人可能会从此提醒中受益 . 这篇文章将重点放在JBoss Fuse和Fabric8上,但所有正在寻找最 ...

  2. jboss fuse 教程_JBoss Fuse –一些鲜为人知的技巧

    jboss fuse 教程 TL; DR 将Java静态调用公开为Karaf Shell本机命令 在部署时覆盖OSGi标头 在使用OSGi片段部署时间后覆盖OSGi标头 将Java静态调用公开为Kar ...

  3. JBoss Fuse:使用JEXL的动态蓝图文件

    在本文中,我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本. 我不一定会称其为最佳实践,但我一直认为这种功能可能有用. 可能当我被迫使用xml来模拟命令式编程结 ...

  4. Windows下Libvirt Java API使用教程(三)- TLS认证访问和动态链接文件依赖

    之前已经介绍过了libvirt api的上手使用方式: <Windows下Libvirt Java API使用教程(二)- 接口使用说明> <Windows下Libvirt Java ...

  5. jboss fuse 教程_使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行

    jboss fuse 教程 红帽公司最近发布了一个微服务集成工具包,用于在OpenShift v3的Docker和Kubernetes环境中运行我们的微服务. 为了帮助人们更好地理解这一点,我将Rid ...

  6. jboss fuse 教程_IDC关于使用JBoss Fuse的商业价值的报告(与Apache Camel一起使用)

    jboss fuse 教程 这只是一篇博客文章,具有更多的商业性质,但是您不能一无所有. 实际上,这也是使Apache Camel保持活力并保持良好状态的原因,这还归功于其商业上的成功. 希望从JBo ...

  7. jboss fuse 教程_在JBoss Fuse / Fabric8 / Karaf中使用Byteman

    jboss fuse 教程 您是否曾经尝试了解一些简单的东西不起作用的过程? 您正在任何众所周知的上下文中编写代码,无论出于何种原因它都无法正常工作. 而且您信任您的平台,因此您认真阅读了所有日志. ...

  8. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件

    XamarinSQLite教程在Xamarin.Android项目中提取数据库文件 由于不能直接打开该文件,开发者需要先将数据库文件从Android系统中提取出来.操作步骤如下. (5)选择MyDoc ...

  9. XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

    XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocumen ...

最新文章

  1. 2022-2028年中国服务机器人行业市场调查研究及前瞻分析报告
  2. ora-01033:oracle initializationg or shutdown in progress
  3. word 常用快捷键
  4. OpenCV Image Pyramids影像金字塔
  5. 机器学习实战:TypeError: unhashable type: 'matrix'
  6. SAP CRM webclient ui drop down list key mode
  7. jzoj3896-战争游戏【tarjan,割点,点双联通分量】
  8. badboy的录制和jmeter的使用
  9. hapi 获取 请求地址 url
  10. linux c mysql 增删改查_Linux C语言连接MySQL 增删改查操作
  11. How to Create and Drop database in MongoDB
  12. 360提高计算机运行速度,简单操作,360优化加速帮你优化电脑运行速度
  13. 因为制作爬虫程序,我收到了警告
  14. 第二讲:云分类及服务模式
  15. python学习2——if语句、elif、if嵌套、while循环、while嵌套
  16. 重庆电信助力新一代物联网商用平台
  17. 【大数据入门核心技术-Tez】(四)Tez与Hdfs整合
  18. DR,CR,DX区别
  19. science 近些年上发表的关于网络人工智能等内容汇总
  20. 1一10到时的英文单词_1到10的英文单词-从1到10的英文-英语-庄影纬同学

热门文章

  1. YBTOJ洛谷P2042:维护数列(平衡树)
  2. AT4439-[AGC028E]High Elements【结论,线段树】
  3. P4103-[HEOI2014]大工程【虚树,dp】
  4. P3960-列队【权值线段树】
  5. nssl1176-轨道【数论,Dp】
  6. 【2018.3.17】模拟赛之三-ssl1863jzoj1367 俄罗斯方块【模拟】
  7. atcoder E - Greedy Ant(最优解等价+dp)
  8. NEERC2017 Archery Tournament 线段树 新套路
  9. 网络流及建模专题(下)
  10. 汇编语言(二)之数值求和