在OpenShift上将JMS与JBoss A-MQ结合使用。 从远程客户端和加密中学到的经验教训。...

OpenShift是“红帽开发的开放式混合云应用程序平台”。 它具有不同的风格,对于大多数您想做的事情,最有趣的部分是公共云应用程序开发和托管平台“ OpenShift Online ”。 您可以轻松地尝试一下,因为在云中使用OpenShift Online是免费的,而且很容易。 它所需要的只是一个电子邮件地址 。 该免费产品允许多达三个基本的小型设备,并可以托管来自多种不同语言和框架的多达三个应用程序。 如果您需要更多,可以将您的计划升级到付费版本。 有关更多详细信息,请访问在线功能比较网站 。


OpenShift上的JBoss A-MQ

Java消息服务是跨系统通信的有效方法,即使在非Java应用程序之间也是如此。 通过基于开放源代码技术和强大的标准,RedHat OpenShift使开发人员可以轻松地将其JMS应用程序移动到云中,或编写利用已加密Internet连接利用JMS消息的新系统。

这篇文章将介绍使用两个主要应用程序的方法:用于托管Web应用程序的WildFly 8和用于异步消息传递的JBoss A-MQ 。 这两个应用程序都可以在OpenShift的免费层中运行。

创建一个A-MQ装备

通过将A-MQ部署到OpenShift云,您的设备将收到几个可公开访问的端口。 然后,客户端系统可以使用这些远程端口连接到您的A-MQ服务。 端点需要加密,因此不会在Internet上以纯文本形式发送JMS消息。

创建A-MQ装备的第一步是克隆现有的JBoss Fuse A-MQ墨盒。 对于那些对墨盒管理感兴趣的人,可以查看有关该墨盒的完整详细信息 。 (注意:如果您正在寻找带有ActiveMQ的上游墨盒, 请查看此博客。 )

rhc create-app amq http://is.gd/Q5ihum

创建后,该齿轮会提供三个重要的信息:

  1. 您将用于登录JBoss Fuse的管理密码,用于管理A-MQ。
  2. 客户必须具有一个新的公用密钥才能与A-MQ通信。 该信息如下所示:

    —–BEGIN证书-

    -结束证书-

  3. A-MQ用于远程连接的公共端口列表。

在OpenShift上管理加密

客户端和您的OpenShift设备之间的区别在于OpenShift需要私钥。 如果需要更改密钥,则密钥库文件为FILENAME。 如果更改密钥,则客户端必须具有公共密钥,然后他们才能信任它。 如果更改键,则必须重新启动齿轮。 如果您在创建齿轮时忘记了复制证书,而您更改了密钥库并需要提取证书,请使用以下命令:

keytool -list -keystore ~/jboss-amq/jboss-a-mq-6.1.0.redhat-378/etc/keystore.jks
keytool -exportcert -alias (whatever it says) -keystore -file openshiftamq.cer

使用SFTP客户端下载openshiftamq.cer文件并配置客户端。

在客户端上管理加密

  1. 将密钥文本复制到名为amqpublic.cer的文件中。 复制每一行,包括BEGIN和END行。
  2. 将公共证书导入到客户将使用的信任库中。
    keytool -importcert -alias openshiftamq -file openshiftamq.cer openshiftamq.jks
  3. 将openshiftamq.jks文件放置为应用程序的类路径资源或值得纪念的地方。 您不再需要.cer文件,但仍可以保留它。
  4. 在客户端代码中,将此信任库配置为与A-MQ连接一起使用。 如果不执行此步骤,则客户端将不信任服务器。
    private ConnectionFactory connection(String url) {ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);try {connectionFactory.setTrustStore("openshiftamq.jks"); //or file if not in classpath root} catch (Exception ex) {Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Unable to load trust store.", ex);}connectionFactory.setTrustStorePassword("put your password here");return connectionFactory;
    }

客户远程通讯

使用OpenShift保险丝A-MQ装置的好处之一是可以暴露多个外部端口。 因此,无需使用rhc port-forward命令即可使用A-MQ服务。 A-MQ客户的URL如下所示:

ssl://gearname-YourDomain.rhcloud.com:PORT
  • 齿轮名-管理控制台中齿轮的名称。
  • YourDomain –您的标准OpenShift域。
  • PORT –创建盒带时提供的数字端口号。

使用上面的ConnectionFactory代码配置客户端。

OpenShift Gear中的其他ActiveMQ配置

您的OpenShift实例中提供了标准A-MQ实例的许多配置选项。 为此的配置文件是:

~/jboss-amq/jboss-a-mq-6.1.0.redhat-78/etc/activemq.xml

有一些警告。 即,您可以更改<transportConnector />的协议,但不能更改IP或端口。 这些端口由您的OpenShift Gear控制,并且实际上是外部区域唯一允许的端口。

防止齿轮空转

OpenShift被设计为资源共享系统,并且空闲资源实际上将进入睡眠状态,直到被访问为止。 JMS在OpenShift上造成了一个特殊的问题,即如果它处于空闲状态,则连接将不起作用,新客户端也无法连接。

为防止这种情况,请自动执行一个脚本,该脚本会定期与JBoss Fuse Web控制台进行交互,或者始终保持至少一个客户端与您的A-MQ连接。

翻译自: https://www.javacodegeeks.com/2014/11/jms-with-jboss-a-mq-on-openshift-lessons-learned-about-remote-clients-and-encryption.html

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

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

相关文章

[Swift]LeetCode281. 之字形迭代器 $ Zigzag Iterator

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

SpringBoot整合系列-PageHelper分页插件

原创作品&#xff0c;可以转载&#xff0c;但是请标注出处地址&#xff1a;https://www.cnblogs.com/V1haoge/p/9971043.html SpringBoot整合MyBatis分页插件PageHelper 步骤 第一步&#xff1a;首先整合MyBatis 参照之前SpringBoot整合系列-整合MyBatis 第二步&#xff1a;添加…

mysql为什么不能插入数据_mysql为啥不能插入数据

mysql为何不能插入数据&#xff1f;安装AppServ后首次使用mysql&#xff0c;没有图形界面&#xff0c;在“MySql Command Line Client”的操作如下&#xff1a;mysql> create database cars;Query OK, 1 row affected (0.00 sec)mysql> use cars;Database changedmysql&g…

scss-@extend

extend指令用于共享规则和选择器之间的关系。它可以扩展所有其他类的样式在一个类中&#xff0c;也可应用于自己特定的样式。 查看如下scssextend示例&#xff1a; .style{font-size: 30px;font-style: italic; }h2{color: #787878;extend .style} .container{extend h2 } 编译…

JavaSE 7,8:确定特定文件系统支持的视图

如果您对文件或目录有疑问&#xff0c;例如是否隐藏文件&#xff0c;是否为目录&#xff0c;文件的大小以及文件的所有者&#xff0c;则可以从元数据中获得这些问题&#xff08;以及许多其他问题&#xff09;的答案&#xff0c;这是关于其他数据的数据。 NIO.2将元数据的概念与…

mocha 测试 mysql_e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDrive

e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别 &#xff0c; 下面讲一下Node.js中如何访问数据库&#xff0c; 在做自动化测试过程中&#xff0c; 经常可能遇到需要到数据库取值&#xff0c;或是…

13.看板方法——使用两层系统扩展看板笔记

00.看板方法的第一条原则是&#xff1a;对在制品设置限额&#xff0c;并通过使用一个可视化的信号系统来拉动工作。 01.大型项目也需要大家对优先级排序节奏达成共识&#xff0c;及时对输入队列进行填充。一般的规则是&#xff0c;会议越频繁今儿节奏越紧凑越好。 02.规模更小、…

在Window上使用Jenkins自动发布Java工件

这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序&#xff08;使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序&#xff09;的发布过程-上载发布工件到发布存储库。 如上一篇文章在Windows上使用Jenkin…

scss-@for 指令

此指令用于循环输出&#xff0c;具有两种循环方式&#xff0c;下面分别做一下介绍。 &#xff08;1&#xff09;.for $var from <start> through <end>: 此种方式的遍历索引区间是[start,end]&#xff0c;scss代码实例如下: for $i from 1 through 3 {.item-#{$i} …

Python开发【第六篇】:模块

Python开发【第六篇】&#xff1a;模块 模块&#xff0c;用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程&#xff0c;函数式编程则完成一个功能&#xff0c;其他代码用来调用即可&#xff0c;提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来…

yocto 离线编译

使用yocto编译一个软件包时&#xff0c;一般会先在本地寻找下载好的源码包&#xff0c;如果不存在则根据配置从网络下载。 添加本地源码包 为了支持离线编译&#xff0c;添加一个包的配置文件后&#xff0c;需要在本地也准备好源码包。 可以先打开网络连接&#xff0c;让yocto帮…

mysql 帐号开启远程_两大步骤教您开启MySQL 数据库远程登陆帐号

在工作实践和学习中&#xff0c;如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题&#xff0c;以下内容便是在工作和实践中总结出来的两大步骤&#xff0c;能帮助DBA们顺利的完成开启 MySQL 数据库的远程登陆帐号。1、确定服务器上的防火墙没有阻止 3306 端口MySQL 默认…

scss-字符串连接符

运算可用于连接字符串: // SCSS p {cursor: e -resize; } // 编译后的 CSS 样式 p {cursor: e-resize; } 请注意&#xff0c;如果带引号的字符串被添加到不带引号的字符串中&#xff08;也就是说&#xff0c;带引号的字符串在 的左侧&#xff09;&#xff0c; 那么返回的结…

用于Play框架分布式应用程序的Init.d Shell脚本

我编写了一个Shell脚本来控制使用内置命令dist打包的Play框架应用程序。 以这种方式打包的应用程序是压缩的独立发行版&#xff0c;不需要在应该运行其的计算机上安装Play框架。 所需的一切都在包装内。 在zip的bin目录中&#xff0c;有一个可执行的Shell脚本&#xff0c;其名称…

在Java中使用内存映射文件时检测(写入)失败

内存映射文件是一个很好的并且经常被忽视的工具。 我不会在这里详细介绍它们的工作方式&#xff08;使用 力 Google Luke&#xff01;&#xff09;&#xff0c;但我将快速总结其优势&#xff1a; 操作系统提供的延迟加载和写入缓存&#xff08;您不必自己编写&#xff0c;并…

在jsp文件中通过超链接访问servlet_Eclipse中创建Servlet

1.新建test1.jsp文件&#xff0c;输入如下代码代码解释&#xff1a;一个超链接&#xff0c;跳转到forwardServlet注意forwardServlet 这里是个Servlet2.在工程中新建Servlet3.输入Class名称&#xff0c;注意下边的Supper Class 它自动继承了HttpServlet选择next4.Create Servle…

C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用...

1、简介 虽然ThreadPool、Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常、或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它,而不是让它继续执行,消耗资源.让CPU不在把时间和资源花在没有意义的代码上. 2、主线…

HTML邮件制作规范

以下内容有些是别人总结的&#xff0c;有些是自己在工作中总结的。 模板最佳尺寸&#xff1a;显示宽度550px-750px&#xff0c;模板高度控制在一屏以内。 1、 用table css方式构建模板 Div css布局不完全被邮件客户端支持&#xff0c;所以无法使用div css布局。 2、 可以使用…

Oracle学习:新建表空间

1. 以 sysdba 身份登入Oracle sqlplus / as sysdba; 2. 创建表空间 create tablespace (空间名)fwptfs (数据文件存放路径)datafile D:\xxx (初始大小)size 500m (自动扩容&#xff0c;每次200m)autoextend on next 200m; 3. 创建用户 create user (用户名)fwptfs…

在Jersey 2中进行集成测试自定义验证约束

我最近加入了一个团队&#xff0c;试图将一个单一的遗留系统转换为Java中的RESTful服务集。 他们决定使用最新的2.x版本的Jersey作为REST容器&#xff0c;这对我来说不是首选&#xff0c;因为我不是JSR- *规范的忠实拥护者。 但是现在我必须承认&#xff0c;JAX-RS 2.x的运行正…