这个网站上的“标准”答案与JBoss 5有关,JBoss 5是历史上的两个主要版本,并且具有大量的配置格式变化.
我正在使用JBoss AS 7.0.2.Final和“独立”部署.任何人都这样做,可以共享使用的配置?谢谢.
解决方法
您可以考虑运行托管域实例.这将允许您使用Web应用程序维护两个服务器实例,以及从单个控制台视图维护端口和接口声明的简便性.
目标是一个具有两个服务器的托管域.每个服务器都属于不同的服务器组.每个服务器组都可以根据需要拥有自己的接口或端口声明.
这为您提供了一个管理控制台,其中包含一组相关的服务器组,可以将您当前和未来的服务器分配给它,并能够动态更改,重新分配或禁用.
组态
您需要注意的文件是以下文件路径下的host.xml和domain.xml配置文件.
〜/ JBOSS_HOME /结构域/配置
从domain.xml我们可以看到套接字绑定组.以下示例是默认的“标准套接字”组,但您可以根据需要自由创建任意数量的组,并根据需要添加尽可能多的声明.
<socket-binding-groups> <socket-binding-group name="standard-sockets" default-interface="public"> <socket-binding name="ajp" port="8009"/> <socket-binding name="http" port="8080"/> <socket-binding name="https" port="8443"/> <socket-binding name="osgi-http" interface="management" port="8090"/> <socket-binding name="remoting" port="4447"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> </socket-binding-group> ...
您可以根据需要创建两个套接字绑定组,以满足您可能需要的两组端口.一旦它们存在,您希望服务器组了解它们.让我们进一步了解domain.xml文件.
我们可以在以下示例中看到服务器组引用套接字绑定组.对于奖励积分,我们可以看到部署了一些应用程序.这是通过管理控制台发生的,但AS 7会将控制台和CLI更改为配置.
<server-groups> <server-group name="main-server-group" profile="full"> <jvm name="default"> <heap size="1303m" max-size="1303m"/> <permgen max-size="256m"/> </jvm> <socket-binding-group ref="full-sockets"/> <deployments> <deployment name="your_application.jar" runtime-name="your_application.jar"/> <deployment name="your_application_02.ear" runtime-name="your_application_02.ear"/> <deployment name="test.war" runtime-name="test.war"/> </deployments> </server-group> <server-group name="other-server-group" profile="full-ha"> <jvm name="default"> <heap size="1303m" max-size="1303m"/> <permgen max-size="256m"/> </jvm> <socket-binding-group ref="full-ha-sockets"/> <deployments> <deployment name="your_application_02.ear" runtime-name="your_application_02.ear"/> <deployment name="test.war" runtime-name="test.war"/> </deployments> </server-group> </server-groups>
domain.xml文件是域控制器的配置,域控制器是托管域的“老板”.实际的服务器信息包含在主机控制器中,所以让我们看一下host.xml文件.
<servers> <server name="server-one" group="main-server-group"> </server> <server name="server-two" group="main-server-group" auto-start="true"> <!-- server-two avoids port conflicts by incrementing the ports in the default socket-group declared in the server-group --> <socket-bindings port-offset="150"/> </server> <server name="server-three" group="other-server-group" auto-start="false"> <!-- server-three avoids port conflicts by incrementing the ports in the default socket-group declared in the server-group --> <socket-bindings port-offset="250"/> </server> </servers>
我们可以在默认域中看到三个服务器.第三个是other-server-group组的成员,而前两个是main-server-group组的成员.请注意端口绑定声明.
您可以删除第三个服务器,并将服务器1和服务器2分别专用于第一个和第二个Web应用程序.每个服务器都可以属于一个唯一的组.每个组都可以声明一个唯一的端口.在此之后,您已准备好将应用程序部署到各自的组,然后您就离开了.
使用管理工具
示例显示了XML,但在配置安装时应使用管理控制台或管理CLI.控制台很简单,所以这里有一些CLI操作可以提供帮助.
要显示服务器组:
[domain @ localhost:9999 /] / server-group = *:read-resource(include-runtime = true)
[domain @ localhost:9999 /] / socket-binding-group = *:read-resource(include-runtime = true)
您希望公开特定的http属性值,因此我们可以修改CLI操作以在该子节点上运行.包含运行时参数有助于我们捕获在运行时传递但尚未写入或持久保存到服务器模型的任何内容.
[domain @ localhost:9999 /] / socket-binding-group = standard-sockets / socket-binding = http:read-resource(include-runtime = true)
这就是你如何写它.
[domain @ localhost:9999 /] / socket-binding-group = standard-sockets / socket-binding = http:write-attribute(name = port,value = 8081)
这应该让你开始.你可能会收集,我是管理域的粉丝……