我试图了解JAXRS 2.0异步功能,因此我使用Jersey 2.1和Glassfish 4来运行在有效负载中有线程休眠的REST服务。
使用
@GET
@Produces(MediaType.APPLICATION_JSON)
@ManagedAsync
public void getExamples(@PathParam("value") final Integer value,
@Suspended final AsyncResponse res) {
// This executes the method by a separated thread
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
res.resume((Integer) value * 2);
}
和
@GET
@Produces(MediaType.APPLICATION_JSON)
public Integer getExamples(@PathParam("value") final Integer value) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (Integer) value * 2;
}
使用此web.xml
<display-name>Jersey2 Example</display-name>
<description>
An example async Java REST API using Jersey 2
</description>
<servlet>
<servlet-name>Jersey2 REST Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.jersey.test.ExampleApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Jersey2 REST Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我希望观察到请求/秒性能的显着差异。
然而,我得到完全相同的表现,我无法理解为什么。
你能给我一些关于发生了什么的提示吗?