2011-08-11 3 views
3

J'essaye de lier Jetty pour écouter seulement l'adresse IPv6. J'utilise Jetty 7.4.2.v20110526.Bind Jetty à l'adresse IPv6

mon 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>  

l'erreur que je reçois:

[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) 

J'ai essayé les deux ::1 et [::1]

Comment puis-je lier la jetée à l'adresse IPv6? IPv6 est-il pris en charge par Jetty?

+0

Jetty peut être exécuté sous Java avec 'preferIPv4Stack = true', ce qui désactive IPv6. –

+0

@ Steve-o Je n'ai pas défini cette propriété. Et plus tôt dans les tests, je crée un 'ServerSocket' qui écoute' [:: 1]: 9999' sans aucun problème. Java n'a rien à voir avec ça. – Thresh

+1

êtes-vous sûr: http://bugs.sun.com/view_bug.do?bug_id=6230761 –

Répondre

3

Si vous ne trouvez pas une solution, il est ici. Changez le connecteur NIO avec l'IO. Au lieu d'utiliser « org.mortbay.jetty.nio.SelectChannelConnector » utiliser « org.mortbay.jetty.bio.SocketConnector » et la configuration globale du connecteur sera:

<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> 

De cette façon, vous serez capable d'accéder à la page Web en utilisant à la fois l'adresse IPv4 et IPv6. J'espère que cela t'aides.

+0

Cette réponse est invalide pour la question. La question utilise clairement Jetty 7+ (avec l'espace de noms org.eclipse.jetty). Votre réponse n'est valide que pour Jetty 6. –