2011-08-11 102 views
3

我試圖綁定Jetty只偵聽IPv6地址。我正在使用Jetty 7.4.2.v20110526。將Jetty綁定到IPv6地址

我的jetty.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>  

錯誤,我得到:

[email protected]: 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]

我怎麼能結合碼頭到IPv6地址? Jetty支持IPv6嗎?

+0

Jetty可能在Java下運行,使用'preferIPv4Stack = true'來禁用IPv6。 –

+0

@ Steve-o我沒有設置這個屬性。在早期的測試中,我創建了一個'ServerSocket',它可以在沒有任何問題的情況下偵聽[:: 1]:9999'。 Java與它無關。 – Thresh

+1

你確定:http://bugs.sun.com/view_bug.do?bug_id=6230761 –

回答

3

如果你還沒有找到一個解決辦法,在這兒呢。使用IO更改NIO連接器。除了使用「org.mortbay.jetty.nio.SelectChannelConnector」的使用「org.mortbay.jetty.bio.SocketConnector」和整個連接器的配置將是:

<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地址訪問網頁。希望這可以幫助。

+0

這個回答對於這個問題無效。這個問題顯然使用Jetty 7+(帶有org.eclipse.jetty命名空間)。您的答案僅適用於Jetty 6。 –