我的目标是设置一个码头测试服务器并注入一个自定义 servlet 来测试我项目中的一些 REST 类。我能够使用 spring xml 启动服务器并针对该服务器运行测试。我遇到的问题有时是在服务器启动后,进程在运行测试之前停止。码头似乎没有进入背景。它每次都在我的电脑上工作。但是当我部署到我的 CI 服务器时,它不起作用。当我使用 VPN 时,它也不起作用。(奇怪的。)
服务器应该完成初始化,因为测试卡住了,我可以使用浏览器访问服务器。
这是我的弹簧上下文 xml:....
<bean id="servletHolder" class="org.eclipse.jetty.servlet.ServletHolder">
<constructor-arg ref="courseApiServlet"/>
</bean>
<bean id="servletHandler" class="org.eclipse.jetty.servlet.ServletContextHandler"/>
<!-- Adding the servlet holders to the handlers -->
<bean id="servletHandlerSetter" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="servletHandler"/>
<property name="targetMethod" value="addServlet"/>
<property name="arguments">
<list>
<ref bean="servletHolder"/>
<value>/*</value>
</list>
</property>
</bean>
<bean id="httpTestServer" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop" depends-on="servletHandlerSetter">
<property name="connectors">
<list>
<bean class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<property name="port" value="#{settings['webservice.server.port']}" />
</bean>
</list>
</property>
<property name="handler">
<ref bean="servletHandler" />
</property>
</bean>
运行最新的 Jetty 8.1.8 服务器和 Spring 3.1.3。任何的想法?