gpt4 book ai didi

java jetty json获取请求时间和持续时间

转载 作者:行者123 更新时间:2023-11-30 03:54:32 25 4
gpt4 key购买 nike

我正在尝试创建我的第一个非常简单的网络应用程序。我正在使用maven、jetty、restful。我读过一些有关它的主题,但对于完全的初学者来说,它们通常很难禁食。我还没有弄清楚如何尽可能简单地摆脱这两个问题。

  1. 后来我尝试让应用程序变得更加复杂。但我现在想测试一下,如何获取“请求”提交到服务器的时间。我还想了解向客户提供答复所需的时间。我想以 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;
}
}

谢谢! :)

最佳答案

根据您的需要,您可以简单地测量处理请求所需的时间:

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 请求/响应,更不用说网络延迟了。

关于java jetty json获取请求时间和持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com