1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.transport.http;
18
19 import java.io.IOException;
20 import java.net.URI;
21 import java.net.URISyntaxException;
22 import java.util.HashMap;
23 import java.util.Map;
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServlet;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.xml.soap.MessageFactory;
29
30 import org.springframework.context.support.StaticApplicationContext;
31 import org.springframework.util.FileCopyUtils;
32 import org.springframework.ws.soap.saaj.SaajSoapMessage;
33 import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
34 import org.springframework.ws.transport.WebServiceConnection;
35 import org.springframework.ws.transport.support.FreePortScanner;
36
37 import org.apache.commons.httpclient.URIException;
38 import org.junit.Test;
39 import org.mortbay.jetty.Server;
40 import org.mortbay.jetty.servlet.Context;
41 import org.mortbay.jetty.servlet.ServletHolder;
42
43 public class HttpComponentsMessageSenderIntegrationTest extends AbstractHttpWebServiceMessageSenderIntegrationTestCase {
44
45 @Override
46 protected AbstractHttpWebServiceMessageSender createMessageSender() {
47 return new HttpComponentsMessageSender();
48 }
49
50 @Test
51 public void testMaxConnections() throws URISyntaxException, URIException {
52 HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender();
53 messageSender.setMaxTotalConnections(2);
54 Map<String, String> maxConnectionsPerHost = new HashMap<String, String>();
55 maxConnectionsPerHost.put("https://www.example.com", "1");
56 maxConnectionsPerHost.put("http://www.example.com:8080", "7");
57 maxConnectionsPerHost.put("http://www.springframework.org", "10");
58 messageSender.setMaxConnectionsPerHost(maxConnectionsPerHost);
59 }
60
61 @Test
62 public void testContextClose() throws Exception {
63 MessageFactory messageFactory = MessageFactory.newInstance();
64 int port = FreePortScanner.getFreePort();
65 Server jettyServer = new Server(port);
66 Context jettyContext = new Context(jettyServer, "/");
67 jettyContext.addServlet(new ServletHolder(new EchoServlet()), "/");
68 jettyServer.start();
69 WebServiceConnection connection = null;
70 try {
71
72 StaticApplicationContext appContext = new StaticApplicationContext();
73 appContext.registerSingleton("messageSender", HttpComponentsMessageSender.class);
74 appContext.refresh();
75
76 HttpComponentsMessageSender messageSender = appContext
77 .getBean("messageSender", HttpComponentsMessageSender.class);
78 connection = messageSender.createConnection(new URI("http://localhost:" + port));
79
80 connection.send(new SaajSoapMessage(messageFactory.createMessage()));
81 connection.receive(new SaajSoapMessageFactory(messageFactory));
82
83 appContext.close();
84 }
85 finally {
86 if (connection != null) {
87 try {
88 connection.close();
89 } catch (IOException ex) {
90
91 }
92 }
93 if (jettyServer.isRunning()) {
94 jettyServer.stop();
95 }
96 }
97
98 }
99
100 private class EchoServlet extends HttpServlet {
101
102 @Override
103 protected void doPost(HttpServletRequest request, HttpServletResponse response)
104 throws ServletException, IOException {
105 response.setContentType("text/xml");
106 FileCopyUtils.copy(request.getInputStream(), response.getOutputStream());
107
108 }
109 }
110
111
112 }