我正在尝试创建我的第一个非常简单的网络应用。我正在使用maven,码头,安静。我已经阅读了一些关于它的主题,但是它们经常难以完成更快速的begginer。而且我还没有弄清楚如何尽可能简单地摆脱这两个问题。
稍后我尝试让应用程序更复杂。但是我想现在测试一下,我怎样才能得到“请求”提交给服务器的时间。而且我还想花时间来获得客户的答案。我想以json格式显示信息。有一个简单的方法吗?我该怎么办?
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("sample")
public class HelloWorldService {
@Path("/helloWorld/{first}/{second}/{third}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public HelloWorld helloWorld(@PathParam("first") String first, @PathParam("second") String second, @PathParam("third") String third) {
return new HelloWorld(first, second, third);
}
}
还有:
public class HelloWorld {
private String first;
private String second;
private String third;
public HelloWorld(String first, String second, String third) {
this.first = first;
this.second = second;
this.third= third;
}
public HelloWorld(String first, String second) {
this.first = first;
this.second = second;
}
public HelloWorld(){
}
public HelloWorld(String first) {
this.first= first;
}
public String getFirst() {
return first;
}
public String getSecond(){
return second;
}
public String getThird(){
return third;
}
}
谢谢! :)
答案 0 :(得分:2)
根据您的需要,您可以简单地衡量处理请求所需的时间:
class ResponseWrapper<T> {
public final Long generationTime;
public final T response;
public ResponseWrapper(final Long generationTime, final T response) {
this.generationTime = generationTime;
this.response = response;
}
}
@...
public ResponseWrapper<HelloWorld> helloWorld(...) {
long startTime = System.currentTimeMillis();
// process the request
long elapsedTime = System.currentTimeMillis() - startTime;
return new ResponseWrapper<HelloWorld>(elapsedTime , new HelloWorld(...));
}
或者,如果您需要更通用的解决方案,请使用filters from Servlet API:
public class GenerationTimeFilter implements Filter {
...
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
long startTime = System.currentTimeMillis();
chain.doFilter(req, res);
long elapsedTime = System.currentTimeMillis() - startTime;
}
}
要了解如何修改ServletResponse
内部过滤器,请参阅此问题:Looking for an example for inserting content into the response using a servlet filter
请记住,这种类型的测量不会给最终用户他/她必须等待获得响应的时间。您的应用程序服务器需要几毫秒来处理原始HTTP请求/响应处理,更不用说网络延迟了。