Мое веб-приложение должно общаться с устройством в моей локальной сети через сокет.Я пытаюсь открыть ServerSocket на порт> 45000 и прослушать его для входящих подключений.Класс, который реализует это, работал отлично, когда я разрабатывал его и запускал как автономный компонент, но он выдает исключение, когда я пытаюсь запустить его как часть моего веб-приложения под Tomcat.
Что я могу сделать, чтобы это исправить?Мне нужно прослушивать этот порт, и я получаю не HTTP-трафик, поэтому я не могу его прослушать, открыв его в файле config.xml.
Вот, в основном, код, который не работает:
private void start() {
ServerSocket s = 0;
try {
s = new ServerSocket(45678); // this is line 38 (see stacktrace)
} catch (IOException e) {
Misc.log("Could not listen on port: 45678.\n" + Misc.getStackTrace(e));
// System.exit(-1);
}
...
}
Вот трассировка стека:
Could not listen on port: 45634.
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at x.x.x.userland.logging.WebServer.start(WebServer.java:38)
...
Спасибо за вашу помощь.С наилучшими пожеланиями, Тимофей.
UPD добавлена вершина трассировки стека.PS.он пишет, даже когда я запускаю его в первый раз
UPD 2 Оказывается, этот порт используется чем-то, что называется Coyote ...
INFO: Initializing Coyote HTTP/1.1 on http-80
28.09.2011 13:04:36 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-45634
28.09.2011 13:04:36 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 267 ms
Iпостараюсь «уговорить» Койота не использовать его.Можно ли это сделать вообще?