8.3. 部署集群 EJB
JBoss EAP 7.3 的 HA 配置文件中提供了集群支持。启动启用了 HA 功能的单机服务器涉及从 standalone-ha.xml 或
文件启动它:
standalone-
full-ha.xml
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml
$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml
这将启动具有 HA 功能的服务器的单个实例。
要查看群集的优势,您将需要多个服务器实例。因此,让我们启动具有 HA 功能的另一台服务器。该服务器的另一个实例可以在同一台计算机上,也可以位于其他计算机上。如果它位于同一台机器上,则需要处理两个问题:
- 为第二个实例传递端口偏移
-
确保每个服务器实例都具有唯一的
jboss.node.name
系统属性。
您可以通过将以下两个系统属性传递给启动命令来做到这一点:
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.socket.binding.port-offset=PORT_OFFSET -Djboss.node.name=UNIQUE_NODE_NAME
$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.socket.binding.port-offset=PORT_OFFSET -Djboss.node.name=UNIQUE_NODE_NAME
遵循您对将 EJB 部署部署到此实例时熟悉的任何方法。
仅将应用部署到群集服务器独立实例的一个节点上,并不意味着它将自动部署到其他集群实例。您还必须明确将它部署到其他独立集群实例上。或者,您可以在域模式中启动服务器,以便将部署部署到服务器组中的所有服务器上。
现在,您已在两个实例上部署了带有集群 EJB 的应用,EJB 现在可以利用集群功能。
从 JBoss EAP 7 开始,如果使用 HA 配置文件启动 JBoss EAP,则将复制有状态会话 Bean 的状态。您不再需要使用 @Clustered
注释来启用集群行为。
您可以通过在 @Stateful
注释中将 passivationCapable
设置为 false
来为有状态会话 Bean 禁用复制:
@Stateful(passivationCapable=false)
@Stateful(passivationCapable=false)
这会指示服务器使用 passivation-disabled-cache-ref 定义的
而不是 ejb
缓存,cache-ref
。
要全局禁用有状态会话 Bean 的复制,请使用以下管理 CLI 命令:
/subsystem=ejb3:write-attribute(name=default-sfsb-cache,value=simple)
/subsystem=ejb3:write-attribute(name=default-sfsb-cache,value=simple)