Jetty から要求しているクライアントに、http 経由でスタブ応答を送信する必要があります。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 を渡し、その URLhttp://localhost:8080
にリクエストを送信します。この時点で、HelloHandler のハンドル メソッドが呼び出され、このダミーの 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 から同じことを実行すると、上記のエラーがスローされます。私は何を間違っていますか?