当我尝试使用netbeans IDE 7.3.1中的默认设置启动glassfish服务器时出现以下错误:
java.net.BindException: Address already in use: bind
详细信息: http://ideone.com/wKbat3
我该怎么办?如何清除玻璃鱼的地址?如何设置glassfish使用其他地址?在这种情况下,“地址”意味着什么?
答案 0 :(得分:11)
主要原因是另一台服务器正在使用端口8080,即默认端口(如果在命令行中使用这些端口,则检查窗口:netstat -a -o)
您需要在以下位置进行更改:
/glassfish/domains/domain1/config/domain.xml
更改:强>
name="http-listener-1" **port="8080"**
name="http-listener-2" **port="8181"**
要强>
name="http-listener-1" **port="9090"**
name="http-listener-2" **port="9191"**
然后,从框架中删除服务器(例如Eclipse),关闭它,启动它并再次添加Glashfish。
在开始框架之前,请确保没有这样的文件:
/glassfish/domains/domain1/osgi-cache/felix/*.lock
如果它存在,删除它,您可以停止任何Java进程删除它。
这些步骤对我有用。
答案 1 :(得分:3)
似乎另一台服务器正在使用分配给您的glassfish服务器的其中一个端口。
在我的情况下,我得到例外SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"] java.net.BindException: Address already in use: JVM_Bind <null>:8009
事实证明,这是一个已经在我的电脑上运行的被遗忘的Tomcat实例。当我禁用被遗忘的那个时,异常就消失了。
因此,在您的情况下,某些其他服务器占用了glassfish服务器使用的端口。找到它的服务器并将其停止,或者为glassfish服务器分配不同的端口。
如果你在Windows上,你可以使用netstat -a -o
命令,看看女巫进程使用端口号:
有关如何查找在特定端口上运行的进程的更多信息,另请参阅this guide
答案 2 :(得分:1)
看看/glassfish/domains/domain1/config/domain.xml,您应该找到这样的部分
<network-listeners>
<network-listener name="http-listener-1" port="8080" protocol="http-listener-1" thread-pool="http-thread-pool" transport="tcp"/>
<network-listener name="http-listener-2" port="8181" protocol="http-listener-2" thread-pool="http-thread-pool" transport="tcp"/>
<network-listener name="admin-listener" port="4848" protocol="admin-listener" thread-pool="admin-thread-pool" transport="tcp"/>
</network-listeners>
这些应该是glassfish需要打开的端口。在我的情况下,由于端口8181已被另一个进程使用,我讨厌同样的错误。我将端口更改为8187,一切正常。 否则你应该找到(netstat -a -b,如果你在Windows上)并在启动glassfish之前使用这些端口停止进程。