- Я запускаю свое приложение, которое использует сервер Jetty, используя порт 9000.
- Затем я закрыл свое приложение с помощью Ctrl-C
- Я проверяю с помощью «netstat -a» и вижу, что порт 9000 больше не используется.
- Я перезапускаю свое приложение и получаю:
[ERROR,9/19 15:31:08] java.net.BindException: Only one usage of each socket address (protocol/network address/port) is normally permitted [TRACE,9/19 15:31:08] java.net.BindException: Only one usage of each socket address (protocol/network address/port) is normally permitted [TRACE,9/19 15:31:08] at java.net.PlainSocketImpl.convertSocketExceptionToIOException(PlainSocketImpl.java:75) [TRACE,9/19 15:31:08] at sun.nio.ch.Net.bind(Net.java:101) [TRACE,9/19 15:31:08] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) [TRACE,9/19 15:31:08] at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:77) [TRACE,9/19 15:31:08] at org.mortbay.jetty.nio.BlockingChannelConnector.open(BlockingChannelConnector.java:73) [TRACE,9/19 15:31:08] at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:285) [TRACE,9/19 15:31:08] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [TRACE,9/19 15:31:08] at org.mortbay.jetty.Server.doStart(Server.java:233) [TRACE,9/19 15:31:08] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [TRACE,9/19 15:31:08] at ...
Это ошибка Java? Можно ли как-то избежать этого перед запуском сервера Jetty?
Редактировать #1 Вот наш код для создания нашего BlockingChannelConnector, обратите внимание на "setReuseAddress(true)":
connector.setReuseAddress( true ); connector.setPort( port ); connector.setStatsOn( true ); connector.setMaxIdleTime( 30000 ); connector.setLowResourceMaxIdleTime( 30000 ); connector.setAcceptQueueSize( maxRequests ); connector.setName( "Blocking-IO Connector, bound to host " + connector.getHost() );
Может ли это быть как-то связано со временем простоя?
Правка #2 Следующая часть головоломки, которая может помочь или не помочь: при запуске приложения в режиме отладки (Eclipse) сервер запускается без проблем!!! Но проблема, описанная выше, воспроизводимо возникает при запуске приложения в режиме выполнения или в виде встроенного файла jar. Виски Танго Фокстрот?
Редактировать №3 (через 4 дня) — проблема все еще существует. Какие-нибудь мысли?