我正在Windows上的NetBeans 7.4下开发REST服务器(使用Java SE Runtime 1.7.0_21-b11) 然后将.war部署在运行Tomcat(Java 1.7.0_45-b18)的Linux机器上,使用ant构建.war
的TeamCity自动构建我正在尝试使用实现HttpServletRequest的自定义构建类来单元测试REST方法,该类只实现了几种方法。
public class HttpMockReq implements HttpServletRequest { @Override ... }
我的问题是,在我的开发环境中,当我在Linux上使用ant编译时,该接口的定义是不同的。具体来说,Windows上的HttpServletRequest中定义了3个方法,这些方法在Linux版本中不存在:
changeSessionId,
upgrade
和
setContentLength
并且Linux构建抱怨我不会用这些(假的)方法覆盖任何东西。
我实际上与
的HttpServletResponse有同样的问题setContentLengthLong
我对不同的库,工具和Java安装感到有点迷茫。我无法弄清楚如何/为什么Windows端(具有稍微旧版本的Java 7)对这些接口有更广泛的定义。
附带问题:有没有办法让其中一个环境接受使用@Ignore或其他东西的更丰富或更差的实现?
答案 0 :(得分:2)
也许您的问题是您正在使用的Tomcat版本。方法changeSessionId()
来自 Servlets 3.1规范,仅支持Tomcat 8.0.X,也许您安装了Tomcat 7.0.X,检查出来,如果是,则尝试下载并安装Tomcat 8.0.X(参见http://tomcat.apache.org/whichversion.html)
答案 1 :(得分:0)
不是实现接口,而是考虑扩展HttpServletRequestWrapper。如果您需要能够实现不同的,不兼容的界面版本,请考虑creating a proxy。