【问题标题】:Bind Jetty to IPv6 address将 Jetty 绑定到 IPv6 地址
【发布时间】:2011-08-11 09:19:00
【问题描述】:

我正在尝试将 Jetty 绑定为仅侦听 IPv6 地址。我正在使用 Jetty 7.4.2.v20110526。

我的码头.xml:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host">::1</Set>
        <Set name="port"><SystemProperty name="jetty.port" default="8070"/></Set>
        <Set name="maxIdleTime">30000</Set>
        <Set name="Acceptors">2</Set>
        <Set name="confidentialPort">8443</Set>
      </New>
  </Arg>
</Call>    

我得到的错误:

java.net.SocketException@3d3c4c09: Address family not supported by protocol family: bind; 
at sun.nio.ch.Net.bind(Native Method)
java.net.SocketException: Address family not supported by protocol family: bind
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:172)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:297)
at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:250)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.Server.doStart(Server.java:269)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)

::1[::1] 我都试过了

如何将 Jetty 绑定到 IPv6 地址? Jetty 是否完全支持 IPv6?

【问题讨论】:

  • Jetty 可能在 Java 下运行,preferIPv4Stack=true 禁用 IPv6。
  • @Steve-o 我没有设置这个属性。在测试的早期,我正在创建一个ServerSocket,它可以毫无问题地收听[::1]:9999。 Java 与它无关。
  • @Steve-o 是的,你是对的。将其发布为答案,我会接受。

标签: jetty ipv6


【解决方案1】:

如果您还没有找到解决方案,这里就是。将 NIO 连接器更改为 IO 之一。而不是使用“org.mortbay.jetty.nio.SelectChannelConnector”,而是使用“org.mortbay.jetty.bio.SocketConnector”,整个连接器配置将是: p>

<Call name="addConnector">
  <Arg>
      <New class="org.mortbay.jetty.bio.SocketConnector">
        <Set name="port"><SystemProperty name="jetty.port" default="8070"/></Set>
        <Set name="maxIdleTime">50000</Set>
        <Set name="lowResourceMaxIdleTime">1500</Set>
      </New>
  </Arg>
</Call>

这样您就可以同时使用 IPv4 和 IPv6 地址访问网页。希望这会有所帮助。

【讨论】:

  • 此答案对该问题无效。这个问题显然使用了 Jetty 7+(使用 org.eclipse.jetty 命名空间)。您的回答仅对 Jetty 6 有效。
【解决方案2】:

旧版本的 Sun JRE 不支持 NIO 通道上的 IPv6,因此只需升级 JVM。

http://bugs.sun.com/view_bug.do?bug_id=6230761

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2012-06-15
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多