Skip to content
This repository was archived by the owner on Dec 15, 2021. It is now read-only.

Commit 0de3e1c

Browse files
committed
Update SPR-13498
1 parent 92e98fe commit 0de3e1c

File tree

7 files changed

+34
-61
lines changed

7 files changed

+34
-61
lines changed

SPR-13498/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1212

1313
<java.version>1.8</java.version>
14-
<spring.version>4.2.2.BUILD-SNAPSHOT</spring.version>
14+
<spring.version>4.2.1.RELEASE</spring.version>
1515
<slf4j.version>1.7.5</slf4j.version>
1616

1717
<jetty.version>9.3.3.v20150827</jetty.version>

SPR-13498/src/main/java/org/springframework/issues/.gitignore

Whitespace-only changes.

SPR-13498/src/main/java/org/springframework/issues/AsyncServlet.java renamed to SPR-13498/src/main/java/org/springframework/issues/RawServletAsyncController.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,40 +15,46 @@
1515
*/
1616
package org.springframework.issues;
1717

18-
import java.io.IOException;
1918
import java.util.concurrent.Executors;
2019
import java.util.concurrent.TimeUnit;
2120
import java.util.concurrent.atomic.AtomicInteger;
2221
import javax.servlet.AsyncContext;
23-
import javax.servlet.ServletException;
22+
import javax.servlet.ServletOutputStream;
2423
import javax.servlet.http.HttpServlet;
2524
import javax.servlet.http.HttpServletRequest;
26-
import javax.servlet.http.HttpServletResponse;
2725

26+
import org.springframework.stereotype.Controller;
27+
import org.springframework.web.bind.annotation.RequestMapping;
28+
import org.springframework.web.bind.annotation.RequestMethod;
2829

29-
public class AsyncServlet extends HttpServlet {
30+
// Demonstrates Tomcat issue:
31+
// https://bz.apache.org/bugzilla/show_bug.cgi?id=58457
32+
33+
@Controller
34+
public class RawServletAsyncController extends HttpServlet {
3035

3136
private final AtomicInteger index = new AtomicInteger();
3237

33-
@Override
34-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
38+
39+
@RequestMapping(path = "/async", method = RequestMethod.GET)
40+
public void handle(HttpServletRequest request, ServletOutputStream os) throws Exception {
3541

3642
System.out.println("Starting async request");
37-
AsyncContext asyncContext = req.startAsync(req, resp);
43+
AsyncContext asyncContext = request.startAsync();
3844
asyncContext.setTimeout(5000);
3945

4046
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> {
4147
try {
4248
int indexValue = index.getAndIncrement();
4349
System.out.println(Thread.currentThread() + " index: " + indexValue);
44-
resp.getOutputStream().println(Thread.currentThread() + " index: " + indexValue);
45-
resp.getOutputStream().flush();
50+
os.println(Thread.currentThread() + " index: " + indexValue);
51+
os.flush();
4652
}
4753
catch (Throwable e) {
4854
System.out.println("Exception: " + e.getMessage());
4955
}
5056

5157
} , 1000, 1000, TimeUnit.MILLISECONDS);
52-
5358
}
59+
5460
}

SPR-13498/src/main/java/org/springframework/issues/SseController.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.springframework.issues;
22

3-
import java.io.IOException;
43
import java.util.concurrent.Executors;
54
import java.util.concurrent.TimeUnit;
65

@@ -18,28 +17,29 @@ public class SseController {
1817
private static Logger logger = LoggerFactory.getLogger(SseController.class);
1918

2019

21-
@RequestMapping(path = "/api/events", method = RequestMethod.GET)
20+
@RequestMapping(path = "/sse", method = RequestMethod.GET)
2221
public SseEmitter getEvents() {
22+
2323
SseEmitter emitter = new SseEmitter();
24-
emitter.onTimeout(new Runnable() {
25-
@Override
26-
public void run() {
27-
System.out.println("hello timeout");
28-
emitter.complete();
29-
}
30-
});
24+
25+
// emitter.onTimeout(new Runnable() {
26+
// @Override
27+
// public void run() {
28+
// System.out.println("hello timeout");
29+
// emitter.complete();
30+
// }
31+
// });
32+
3133
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> {
3234
try {
3335
emitter.send(SseEmitter.event().data("Thread writing: " + Thread.currentThread()).name("ping"));
3436
}
35-
catch (Exception e) {
36-
logger.error("In catch1: {}", e.getMessage());
37-
}
38-
catch (Throwable t) {
39-
logger.error("In catch2: {}", t.getMessage());
37+
catch (Throwable e) {
38+
logger.error("In catch: {}", e.getMessage());
4039
}
4140

4241
} , 1000, 1000, TimeUnit.MILLISECONDS);
42+
4343
return emitter;
4444
}
4545

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,19 @@
11
package org.springframework.issues.config;
22

3-
import org.springframework.context.annotation.Bean;
43
import org.springframework.context.annotation.ComponentScan;
54
import org.springframework.context.annotation.Configuration;
65
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
76
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
8-
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
97
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
10-
import org.springframework.web.servlet.view.InternalResourceViewResolver;
118

12-
@EnableWebMvc
13-
@ComponentScan(basePackages="org.springframework.issues")
149
@Configuration
10+
@ComponentScan(basePackages="org.springframework.issues")
11+
@EnableWebMvc
1512
public class WebConfig extends WebMvcConfigurerAdapter {
1613

1714
@Override
1815
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
1916
configurer.setDefaultTimeout(5000);
2017
}
2118

22-
@Override
23-
public void addViewControllers(ViewControllerRegistry registry) {
24-
registry.addViewController("/").setViewName("home");
25-
}
26-
27-
@Bean
28-
public InternalResourceViewResolver viewResolver() {
29-
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
30-
viewResolver.setPrefix("/WEB-INF/views/");
31-
viewResolver.setSuffix(".jsp");
32-
return viewResolver;
33-
}
34-
3519
}

SPR-13498/src/main/webapp/WEB-INF/views/home.jsp

Lines changed: 0 additions & 11 deletions
This file was deleted.

SPR-13498/src/main/webapp/WEB-INF/web.xml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
<servlet>
2323
<servlet-name>appServlet</servlet-name>
24-
<servlet-class>org.springframework.issues.AsyncServlet</servlet-class>
24+
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
2525
<init-param>
2626
<param-name>contextConfigLocation</param-name>
2727
<param-value></param-value>
@@ -35,10 +35,4 @@
3535
<url-pattern>/</url-pattern>
3636
</servlet-mapping>
3737

38-
<!-- Disables Servlet Container welcome file handling. Needed for compatibility
39-
with Servlet 3.0 and Tomcat 7.0 -->
40-
<welcome-file-list>
41-
<welcome-file></welcome-file>
42-
</welcome-file-list>
43-
4438
</web-app>

0 commit comments

Comments
 (0)