SocketConnector 8081 - 地址已被占用

6

我试图在两个不同的端口8080和9000上运行2个Dropwizard Server应用程序。第一个应用程序成功启动,但当我尝试在9000端口上运行时,我一直收到下面的异常。我不理解的是为什么应用程序使用2个端口,我如何强制我的应用程序使用不同的端口号来作为第二个端口。

INFO  [2014-03-22 17:17:28,031] org.eclipse.jetty.server.AbstractConnector: Started    
InstrumentedBlockingChannelConnector@0.0.0.0:9000 
WARN  [2014-03-22 17:17:28,033] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED   
SocketConnector@0.0.0.0:8081: java.net.BindException: Address already in use
! java.net.BindException: Address already in use
! at org.eclipse.jetty.server.bio.SocketConnector.newServerSocket(SocketConnector.java:96)    
~[jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.server.bio.SocketConnector.open(SocketConnector.java:85) ~[jetty-
server-8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) ~
[jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.server.bio.SocketConnector.doStart(SocketConnector.java:156) ~
[jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
[jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.server.Server.doStart(Server.java:291) [jetty-server-
8.1.10.v20130312.jar:8.1.10.v20130312]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
[jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312]
! at com.yammer.dropwizard.cli.ServerCommand.run(ServerCommand.java:48) [dropwizard-core-
0.6.2.jar:na]
! at com.yammer.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:39) 
[dropwizard-core-0.6.2.jar:na]
! at com.yammer.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:58) 
[dropwizard-core-0.6.2.jar:na]
! at com.yammer.dropwizard.cli.Cli.run(Cli.java:53) [dropwizard-core-0.6.2.jar:na]
! at com.yammer.dropwizard.Service.run(Service.java:61) [dropwizard-core-0.6.2.jar:na]
! at com.paypal.demandgen.places.indexing.IndexingServer.main(IndexingServer.java:96)    
[classes/:na]
WARN  [2014-03-22 17:17:28,034] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED or

你可以使用“-Ddw.http.port=9090”来设置端口。这里是链接:http://dropwizard.codahale.com/manual/core/ - code-gijoe
这正是我将端口设置为9000的方法。第一个应用程序在默认端口上运行,而第二个应用程序通过设置上述JVM标志在9000上运行。 - Abhijeet Kushe
执行netstat命令并检查端口9000和8080是否已被使用。 - code-gijoe
4个回答

9

Dropwizard实际上提供了两个站点:主站点和不同端口上的管理站点。管理部分允许您查看站点的指标和健康检查。

在这种情况下,问题是由Admin客户端引起的,默认情况下运行在8081端口。因此,您还需要设置-Ddw.http.adminPort=9001(例如)。


是的,我正在并行挖掘,并且已经弄清楚了,但还是谢谢你的回复。 - Abhijeet Kushe
很高兴知道你已经解决了它。今天早些时候我也遇到了类似的问题,所以我非常渴望回答。为了后人,我将对我的答案添加一些细节。 - Emma Burrows

8

使用以下yml文件中的设置在不同端口上运行服务器(其中一些设置是通用设置,配置以提高服务器性能)

server:
  applicationConnectors:
    - type: http
      port: 9179
      outputBufferSize: 32KiB
      idleTimeout: 30 seconds
      minBufferPoolSize: 64 bytes
      bufferPoolIncrement: 1KiB
      maxBufferPoolSize: 64KiB
      acceptorThreads: 1
      selectorThreads: 2
      acceptQueueSize: 1024
      reuseAddress: true
      soLingerTime: 600s
  adminConnectors:
    - type: http
      port: 9180

0

你可以尝试一件事情,就是检查控制台,如果你的服务器已经在运行,那么在控制台中你会看到一个红色的终止按钮,如果该按钮可用(可点击),那么点击它并重新运行你的代码,这次Eclipse将重新初始化服务器的所有实例和端口。


0
对我来说有效的方法是进行以下更改
server:
  applicationConnectors:
    - type: http
      port: 6666
    - type: https
      port: 6444
  adminConnectors:
    - type: http
      port: 6667

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接