支持IPv4和IPv6双栈环境

由于实验室项目需要,将EJB 3.0的程序部署在JBoss AS 7.1.1.Final中,并要求支持IPv4与IPv6。但其默认配置并不支持IPv6,于是查阅JBoss Community Documentation,即官方文档,在5.4.1 Interfaces and ports节中找到了相关介绍,研究后对JBoss进行配置修改,使JBoss中EJB 3.0的程序能够在IPv4和IPv6双栈环境下正常运行,包括客户端在IPv4环境下获取Remote远程接口对象,调用远程对象的方法收发IPv6的udp报文等。本文不细讲EJB程序,只介绍如何配置JBoss使其支持IPv4和IPv6双栈环境。

文章结构

    第一部分——JBoss7.1官方文档中关于IPv6部分的说明

    第二部分——项目中针对JBoss配置文件修改的详细介绍

--------------------------------------------------------------------------------

Linux服务器JBoss运行环境搭建步骤和开机自动启动脚本编写运行 

RHEL6.5安装OpenJDK1.7.0 + JBoss7.1.1 + Maven3.0.4 

企业Java应用服务器之JBoss7.1与Apache整合 

Linux环境下以后台运行方式启动JBoss 

--------------------------------------------------------------------------------

 第一部分——JBoss7.1官方文档中关于IPv6部分的说明

5.4.1 Interfaces and ports

Interface declarations

domain.xml, host.xml 和standalone.xml 都包含声明接口的部分。当我们看这些在XML文件中接口声明时,就会发现接口的选择条件(selection criteria)有两种类型:一种是单独的XML元素,接口绑定到通配符地址;另外一种是接口或者地址有一个或者多个特征值需要满足。

举例说明,首先是一个接口条件选择的例子,每个接口都有特定的IP地址:

<interfaces>
  <interface>
    <inet-address value="127.0.0.1"/>
  </interface>
  <interface>
    <inet-address value="127.0.0.1"/>
  </interface>
</interfaces>

接着是使用通配符的例子:

<interface>
  <!-- Use the wildcard address -->
  <any-address/>
</interface>

<interface>
  <!-- Use the IPv4 wildcard address -->
  <any-ipv4-address/>
</interface>

<interface>
  <!-- Use the IPv6 wildcard address -->
  <any-ipv6-address/>
</interface>

<interface>
  <nic/>
</interface>

Socket Binding Groups

JBoss AS 7中socket的配置类似于interface的声明,Sockets用一个逻辑名来声明,可以在整个配置中引用。 多个Sockets声明可以用一个特定的名字声明成为一个组。这样在配置一个在管理域里的server group时可以方便的引用一个特定的socket binding group。Socket binding group通过接口逻辑名来引用接口:

<socket-binding-group default-interface="public">
  <socket-binding port="1099"/>
  <socket-binding port="1090"/>
  <socket-binding port="1091"/>
  <socket-binding port="8080"/>
  <socket-binding port="8443"/>
  <socket-binding port="3528"/>
  <socket-binding port="3529"/>
  <socket-binding port="8090"/>
  <socket-binding port="4447"/>
  <socket-binding port="4712"/>
  <socket-binding port="4713"/>
  <socket-binding port="5445"/>
  <socket-binding port="5455"/>
</socket-binding-group>

一个socket binding 包含以下信息:
•name – socket配置的逻辑名,可以在配置的其他任何地方引用。
•port –  这个配置中socket要绑定到的基础端口 (注意server可以通过配置增减所有端口值来覆盖这一配置。)
•interface (可选) – 配置中socket要绑定接口的逻辑名 (参考上面的接口声明)。如果没有指定, socket binding group 配置元素中的default-interface属性值将会被使用。
•multicast-address (可选) --如果socket用于多播,将会使用这个多播地址。
•multicast-port (可选) –  如果socket用于多播,将会使用这个多播端口
•fixed-port (可选, 默认是false) – 如果是true,  端口值将一直使用这个值,这个值不会被使用增减端口值而覆盖。

IPv4 versus IPv6

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4131b0a51b592bc680e1411741e12f56.html