浏览 2279 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-10-11
环境如下: hudson-2.2.1 Hudson Deploy Plugin 1.8 maven 3.0.4 jboss 4.2.3.GA 配置如下: 构建成功,但是发布时报错,错误信息是: Caused by: java.lang.IllegalArgumentException: port out of range:117200 at java.net.InetSocketAddress.<init>(InetSocketAddress.java:118) at org.codehaus.cargo.container.jboss.JBoss4xRemoteDeployer.buildSocketAddressForDeployableServer(JBoss4xRemoteDeployer.java:269) at org.codehaus.cargo.container.jboss.JBoss4xRemoteDeployer.<init>(JBoss4xRemoteDeployer.java:133) at org.codehaus.cargo.container.jboss.JBoss4xRemoteDeployer.<init>(JBoss4xRemoteDeployer.java:117) ... 27 more 可以看到,我配置的jboss端口是17200,但是上面错误信息里却说117200超过范围,多了一个“1” 尝试把端口号改成8080,发布就成功了。或者使用tomcat来发布,无论端口号是17200还是8080都没有问题 于是下载了hudson-deploy的源码,调试一下,发现原因是以下代码: protected InetSocketAddress buildSocketAddressForDeployableServer() { String portStr = configuration.getPropertyValue(JBossPropertySet.REMOTEDEPLOY_PORT); if (portStr == null) { portStr = "1" + configuration.getPropertyValue(ServletPropertySet.PORT); } // 其他代码 return new InetSocketAddress(addressStr, Integer.parseInt(portStr)); } 相关常量如下: String REMOTEDEPLOY_PORT = "cargo.jboss.remotedeploy.port"; String PORT = "cargo.servlet.port"; 上面那行 String portStr = configuration.getPropertyValue(JBossPropertySet.REMOTEDEPLOY_PORT); 总是返回null 而 configuration.getPropertyValue(ServletPropertySet.PORT); 则是返回我配置的端口号,这里是17200 所以最后portStr就变成了"1"+"17200"="117200",超过了端口号的最大限制65535而报错 所以如果我配置的端口号是8080,这里就会是18080,不会报错 如果目标容器是tomcat,则不会走进这段代码,也不会报错 原因找到了,不过没有找到解决的办法。如果是用原生的maven-cargo-plugin插件,我知道可以在pom里配置cargo.jboss.remotedeploy.port参数 但是现在用的是hudson-deploy插件,我试了一整天,也没有找到能让我配置这个参数的地方。包括在hudson里配置全局参数,在job里配置-D参数,在windows里配置环境变量,全部没用 因为我们的容器和端口号是不能改的,所以最后只好放弃了hudson-deploy插件,改用原生的maven-cargo-plugin来自动部署了 不过感觉hudson-deploy应该不会这么弱智吧,应该还是我自己用得不对。不知道大家有没有办法解决这个问题? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |