我需要通过 http 向来自 Jetty 的请求客户端发送一个存根响应。当我独立运行 Junit 测试时,它可以工作,这意味着,我得到了正确的 XML 响应......但是当我从 maven 运行相同的东西时它会失败。我看到的错误是“ java.net.SocketException: Unexpected end of file from server
”。我已经尝试了一切!请帮忙!
这是我的代码 -
Junit(当作为 Junit 测试运行时 - 它有效)
public class MyTest {
@Test
public void testGetOpenLots() throws Exception {
// create fixture
MyService fixture = new MyService();
// create jetty server instance
Server server = new Server(8080);
// set a handler
server.setHandler(new HelloHandler());
// set shutdown conditions
// server.setStopAtShutdown(true);
// start server
server.start();
// invoke operation
MyResponse result = fixture.getWeather(someDummyRequest);
assertNotNull(result);
}
}
在某个地方,在 getWeather() 内部,我创建了一个 URL 对象并将 URL 传递http://localhost:8080
给它并将请求发送到该 URL。此时,我希望 HelloHandler 的 handle 方法将被调用并将这个虚拟 XML 响应写入流,getWeather() 方法将接收响应。
这是处理程序:
public class HelloHandler extends AbstractHandler {
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/xml;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<result>a simple response</result>");
}
}
当我从 maven 运行相同的东西时,它会抛出上面提到的错误。我究竟做错了什么?