2015-04-01 2 views
0

я получил следующее на build.xmlAnt задача сокета не работает на макинтош

<target name="check-port" description="Check whether Tomcat is running"> 
    <condition property="tomcat.running"> 
     <socket server="localhost" port="8080"/> 
    </condition> 
</target> 

Он внезапно перестал работать для макинтош, на окнах он работает отлично, но на макинтош он показывает, как верно даже тогда, когда я получил ничего не работает на localhost: 8080.

Я не уверен, почему это происходит или почему он работает над окнами. Он работал на макинтош ...

Я тестирую на OSX Йосемити версии 10.10.2

Что это могло быть связано? Как я могу это исправить?

+0

Простите презумпцию, но, как вы знаете, в этом порту ничего не слышно? – paxdiablo

+0

'sudo lsof -i -P | grep 8080' Также, когда я запускаю tomcat вручную, он не жалуется –

+0

afsg77, это очень интересно. Я ответил как можно лучше, но я думаю, что это может потребовать глубокого изучения. Тем не менее, надеюсь, ответ даст вам более четкое указание на то, где проблема. – paxdiablo

ответ

1

Я нашел проблему.

Похоже, что антивирус ESET запускает вызов процесса «esets_proxy» на localhost: 8080, но вот смешная вещь не видна через lsof или netstat. Как ни странно, когда я начинал wildfly на 8080, он стал видимым. Но только пока дикая природа работает, после того как я ее закрыл, она перестает показывать. Я удалил ESET, и задача сокета мультиканта перестала показывать порт 8080 как в использовании.

Спасибо @paxdiablo Ваша помощь была действительно полезна!

1

первая вещь, которую я сделал бы, чтобы эмулировать поведение кода ant состояния путем компиляции и выполнения следующего кода:

import java.net.Socket; 
import java.io.IOException; 
public class Test { 
    public static void main(String args[]) { 
     try { 
      Socket socket = new Socket("localhost", 8080); 
     } catch (IOException e) { 
      System.out.println("down"); 
      System.exit(0); 
     } 
     System.out.println("up"); 
    } 
} 

Если что выходы up когда Tomcat не тогда у вас есть фундаментальное несогласие между java и lsof с точки зрения того, что составляет «upness», и тот, который нужно исследовать.

Один из способов, чтобы увидеть, если есть на самом деле является что-то есть, чтобы попытаться подключиться к нему, например, с:

telnet localhost 8080 

Если подключается, я вообще стараюсь lsof, чтобы увидеть, что процесс имеет получил, но, как вы заявляете, кажется, что не работает. Возможно, другой инструмент вроде:

netstat -na | grep ':8080 ' 

сделал бы трюк.


Если он выводит down то у вас есть другой вопрос, либо какая-то проблема в ant или, возможно, процесс сборки сам, начиная от сервера (или другой сервер). Это будет также требует дальнейшего изучения, но вы, по крайней мере, сузили проблему.

Одна вещь, которую вы можете попробовать, - это запустить этот Java-код внутри самого процесса сборки, чтобы увидеть, что он думает в то же время. ant сообщает вам, что сервер есть.

+0

показывает 'up' ... но я могу запустить tomcat без каких-либо жалоб на порт 8080 –

+0

@ afsg77, см. Обновление при попытке' telnet' - не уверен _what_ махинации OSX может потянуть, но на самом деле может быть сервер там, хотя вы отключили Tomcat. – paxdiablo

+0

Это соединение, но оно закрыто ... 'тестер $ telnet localhost 8080 Пытаться: 1 ... Подключен к localhost. Символ выхода - '^]'. Соединение закрыто иностранным хостом. –

0

Я столкнулся с той же проблемой с Антивирусом Касперского на OS X, который запускает невидимый процесс (без netstat) на localhost 8080.

Смежные вопросы