FitNesse与Jenkins:BindException - 可能的端口冲突?

时间:2016-06-29 07:48:49

标签: java jenkins fitnesse

运行FitNesse测试会经常发生(至少一次不到五次运行)会出现此错误消息:

  

无法启动测试系统' slim':fitnesse.slim.SlimError:从客户端获得无效的slim标头。阅读以下内容:

以下似乎为空,因此错误消息在冒号后结束。

日志在我们自己的代码之外显示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在用户&#34; jenkins&#34;下运行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

Jenkins使用端口8086和最新的Java 6版本。在没有安装Java 7的远程主机上构建的所有项目都需要此实例。从浏览器运行测试时出现错误(地址: 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实例做了什么?我在这里看不到链接。
  • FitNesse的端口8090是不是很好选择?我试图将其更改为8050,但也会发生错误。

1 个答案:

答案 0 :(得分:1)

Slim使用的默认端口确实接近您报告的8086:请参阅http://www.fitnesse.org/FitNesse.FullReferenceGuide.UserGuide.WritingAcceptanceTests.SliM上的“配置SLIM”部分

您应该能够通过覆盖myElement.InnerText.Replace("&lt","<"); 属性来使用其他端口(范围)。通过向FitNesse启动脚本提供额外属性,或将其放在`plugins.properties'中:

  

这些属性可以由Wiki页面,命令行(例如-Dslim.port = 9000)或plugins.properties文件提供。