на Fedora 15, запустите приложение Lift на Fedora, получив org.h2.jdbc.JdbcSQLException - PullRequest
0 голосов
/ 02 июля 2011

В Fedora 15 после выполнения mvn jetty: run я получаю следующее исключение при попытке инициализировать MetaMapper для пользователя

org.h2.jdbc.JdbcSQLException: Exception opening port "H2 TCP Server (tcp://
192.168.1.105:33463)" (port may be in use), cause: "timeout" [90061-138]
(full stack trace is pasted last in the mail) 

Ниже описано, как я сгенерировал проект

mvn archetype:generate \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic_2.8.1 \
-DarchetypeVersion=2.3 \
-DarchetypeRepository=http://scala-tools.org/repo-releases \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=com.mytest \
-DartifactId=helloworld \
-Dversion=2.0

Я пытался заменить OpenJDK на Sun JDK, все еще не работает.Что-то не так с H2?Нужно ли переустанавливать H2?Или это проблема с лифтом?

Если я завершу запуск и перезапущу другой, я получу то же исключение, но только другой порт tcp, например

org.h2.jdbc.JdbcSQLException: Exception opening port "H2 TCP Server
(tcp://208.68.143.50:55325)" (port may be in use), cause: "timeout" [90061-138]

Ответы [ 2 ]

0 голосов
/ 03 июля 2011

Скорее всего, это проблема конфигурации сети. Не могли бы вы проверить в вашем хост-файле странные записи? Файл моего хоста (Mac OS):

> cat /etc/hosts
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

Если в этом файле нет ничего странного, пожалуйста, скачайте H2 и запустите ./build.sh testNetwork (или build.bat testNetwork для Windows). В моей системе я получаю:

Target: testNetwork
localhost:localhost/127.0.0.1
  localhost/127.0.0.1
  localhost/0:0:0:0:0:0:0:1
  localhost/fe80:0:0:0:0:0:0:1%1
getLocalHost:Thomas-Muellers-MacBook-Pro.local/192.168.0.105
  /192.168.0.105
byName:/192.168.0.105
ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=55489]
server accepting
client:/192.168.0.105:55489
server accepted:Socket[addr=/192.168.0.105,port=55490,localport=55489]
client:Socket[addr=/192.168.0.105,port=55489,localport=55490]
server read:123
client read:234
server closing
server done
done
Done in 1666 ms

Конечно, H2 может просто использовать "localhost", но тогда некоторые функции будут работать не так, как задумано.

0 голосов
/ 02 июля 2011

Возможно, ваше приложение все еще работает или порты не закрыты. Проверьте, используя 'netstat'.

Вы можете прочитать на so_reuseaddr.

На моем компьютере работает сервер (это Common Lisp, а не H2, но это не имеет значения):

xxx@fp:~$ netstat -tulpen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 127.0.0.1:4005          0.0.0.0:*               LISTEN      1000       68449       7559/sbcl       

Я бы ожидал, что любой процесс прослушивает 208.68.143.50:55325. Если этот IP не ваш компьютер, то происходит что-то странное. Вы можете запустить свое приложение с

sudo strace -f mvn ... 2>&1 test.out

, а затем исследовать файл test.out. Инструмент «strace» позволяет вам регистрировать все системные вызовы, которые выдает программа. Поиск слушай в файле test.out.

...