3.2.8.2. 实现 HA 单点登录
总结
下面的过程演示了如何部署用 SingletonService decorator 包裹并用作群集内的单点登录服务的 Service。这个服务激活了群集里只启动一次的定时器。
过程 3.21. 实现 HA 单点登录服务
编写 HA 单点登录服务应用程序。
下面是一个将部署为单点登录服务的用SingletonServicedecorator 包裹的Service的简单例子。完整的例子请参考 JBoss EAP 6 附带的cluster-ha-singletonquickstart。这个 Quickstart 包含构建和部署应用程序的所有说明。创建服务。
下面是一个服务的示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个将
Service安装为群集单点登录服务的激活器。下面的列表是一个服务激活器的例子,它将HATimerService安装为群集单点登录服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
上面的代码示例使用了org.jboss.as.clustering.singleton.SingletonService类,它是 JBoss EAP 私有 API 的一部分。JBoss EAP 7 里将有可用的公共 API,私有 API 会被废弃,但在 EAP 6.x 发行周期里我们仍将维护这个类。创建 ServiceActivator 文件
在应用程序的resources/META-INF/services/目录里创建一个名为org.jboss.msc.service.ServiceActivator的文件。请添加包含之前步骤里创建的 ServiceActivator 类的全限定名称的一行内容。org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivator
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 Singleton bean,它实现了用作群集内 Singleton Timer 的 Timer。
这个 Singleton bean 不能有 remote 接口,而且您不能从任何应用程序里的其他 EJB 引用其 local 接口。这阻止了客户或其他组件的查找,从而确保 SingletonService 可以完全控制单点登录。创建 Scheduler 接口
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建实现群集内 Singleton Timer 的 Singleton bean。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启动每个启用了群集的 JBoss EAP 6 实例。
要为独立服务器启用群集,您必须用HA配置集启动每个服务器并对每个实例使用唯一的节点名称和端口偏移量。- 对于 Linux,请使用下列命令行语法启动服务器:
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSETCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例 3.3. 在 Linux 上启动多个独立服务器实例
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于 Microsoft Windows,请使用下列命令行语法启动服务器:
EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSETCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例 3.4. 在 Microsoft Windows 上启动多个独立服务器实例
C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意
如果您不想使用命令行参数,您可以为每个服务器实例配置standalone-ha.xml文件以绑定到单独的接口上。将应用程序部署到服务器上
下面的 Maven 命令部署应用程序到运行在默认端口的独立服务器上。mvn clean install jboss-as:deploy
mvn clean install jboss-as:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要部署到其他的服务器,请传入服务器名称。如果位于不同的主机,在命令行上要指定主机名和端口号码:mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099
mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 JBoss EAP 6 附带的cluster-ha-singletonquickstart 的 Maven 配置和部署细节。