FitNesse 与 Jenkins:BindException - 可能的端口冲突?
FitNesse with Jenkins: BindException - Possible port clash?
经常发生 运行FitNesse 测试导致此错误消息的情况(至少在五 运行 秒内发生一次):
Unable to start test system 'slim': fitnesse.slim.SlimError: Got invalid slim header from client. Read the following:
以下似乎是空的,因此错误消息在冒号后结束。
日志显示 BindException
在我们自己的代码之外:
Can not bind to port 8086. Aborting.
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at fitnesse.socketservice.SocketFactory.createServerSocket(SocketFactory.java:33)
at fitnesse.slim.SlimService.<init>(SlimService.java:102)
at fitnesse.slim.SlimService.startWithFactory(SlimService.java:75)
at fitnesse.slim.SlimService.main(SlimService.java:56)
这似乎是端口冲突的原因。 FitNesse 和 Jenkins 运行 在同一台机器上。
FitNesse 运行s 在用户 "jenkins" 下的端口 8090 上 Java 7:
% netstat -plten | grep 8090
tcp6 0 0 :::8090 :::* LISTEN 113 213626367 17072/java
% ps aux | grep 17072
jenkins 17072 0.5 0.5 9299292 130676 ? Sl 13:25 0:04 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -jar /opt/FitServer/fitnesse.jar -p 8090
端口 8086 被最新的 Java 6 版本的 Jenkins 使用。我们在未安装 Java 7 的远程主机上构建的所有项目都需要此实例。当从浏览器 运行ning 测试(地址:jenkins:8090/TestEnvironment/TestSuite)以及 Jenkins 的自动作业时会发生错误。
% netstat -plten | grep 8086
tcp6 0 0 :::8086 :::* LISTEN 118 134031785 32343/java
% ps aux | grep 32343
jenkins+ 32343 0.7 1.5 15745712 384180 ? Sl Jun01 197:53 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins-java6/jenkins-java6.war --webroot=/var/cache/jenkins-java6/war --httpPort=8086 --ajp13Port=-1
现在开始提问:
- 如何摆脱这个错误?
- 为什么FitNesse连接到8086端口?有配置吗?
- FitNesse 对我们的 Jenkins Java 6 实例做了什么?我真的没有在这里看到 link。
- 是不是FitNesse的8090端口选的不好?我尝试将其更改为 8050,但也出现错误。
Slim 使用的默认端口确实接近您报告的 8086:请参阅 http://www.fitnesse.org/FitNesse.FullReferenceGuide.UserGuide.WritingAcceptanceTests.SliM
上的 'Configure SLIM' 部分
您应该能够通过覆盖 slim.port
属性 使其使用不同的端口(范围)。通过为您的 FitNesse 启动脚本提供额外的 属性,或将其放置在“plugins.properties”中:
Those properties can be either provided by a wiki page, on the command line (e.g. -Dslim.port=9000) or in the plugins.properties file.
经常发生 运行FitNesse 测试导致此错误消息的情况(至少在五 运行 秒内发生一次):
Unable to start test system 'slim': fitnesse.slim.SlimError: Got invalid slim header from client. Read the following:
以下似乎是空的,因此错误消息在冒号后结束。
日志显示 BindException
在我们自己的代码之外:
Can not bind to port 8086. Aborting.
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at fitnesse.socketservice.SocketFactory.createServerSocket(SocketFactory.java:33)
at fitnesse.slim.SlimService.<init>(SlimService.java:102)
at fitnesse.slim.SlimService.startWithFactory(SlimService.java:75)
at fitnesse.slim.SlimService.main(SlimService.java:56)
这似乎是端口冲突的原因。 FitNesse 和 Jenkins 运行 在同一台机器上。
FitNesse 运行s 在用户 "jenkins" 下的端口 8090 上 Java 7:
% netstat -plten | grep 8090
tcp6 0 0 :::8090 :::* LISTEN 113 213626367 17072/java
% ps aux | grep 17072
jenkins 17072 0.5 0.5 9299292 130676 ? Sl 13:25 0:04 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -jar /opt/FitServer/fitnesse.jar -p 8090
端口 8086 被最新的 Java 6 版本的 Jenkins 使用。我们在未安装 Java 7 的远程主机上构建的所有项目都需要此实例。当从浏览器 运行ning 测试(地址:jenkins:8090/TestEnvironment/TestSuite)以及 Jenkins 的自动作业时会发生错误。
% netstat -plten | grep 8086
tcp6 0 0 :::8086 :::* LISTEN 118 134031785 32343/java
% ps aux | grep 32343
jenkins+ 32343 0.7 1.5 15745712 384180 ? Sl Jun01 197:53 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins-java6/jenkins-java6.war --webroot=/var/cache/jenkins-java6/war --httpPort=8086 --ajp13Port=-1
现在开始提问:
- 如何摆脱这个错误?
- 为什么FitNesse连接到8086端口?有配置吗?
- FitNesse 对我们的 Jenkins Java 6 实例做了什么?我真的没有在这里看到 link。
- 是不是FitNesse的8090端口选的不好?我尝试将其更改为 8050,但也出现错误。
Slim 使用的默认端口确实接近您报告的 8086:请参阅 http://www.fitnesse.org/FitNesse.FullReferenceGuide.UserGuide.WritingAcceptanceTests.SliM
上的 'Configure SLIM' 部分您应该能够通过覆盖 slim.port
属性 使其使用不同的端口(范围)。通过为您的 FitNesse 启动脚本提供额外的 属性,或将其放置在“plugins.properties”中:
Those properties can be either provided by a wiki page, on the command line (e.g. -Dslim.port=9000) or in the plugins.properties file.