http请求调用在tomcat部署上不起作用

xzlaal3s  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(226)

我有一个web应用程序,它在部署到tomcat时使用javax.ws.rs.client ping rest服务。休息服务不是故意的。
但是,如果ping不是在一个单独的线程上,tomcat应用程序将不会部署,并且将被卡住(我猜http调用会超时吗?)。
我似乎不明白这是为什么。应用程序必须部署到tomcat才能使用javax.ws.rs.client,因为tomcat提供了实现?
这两种方法用于ping rest服务:

private Object sendGetRequest(WebTarget webTarget, Class<?> returnClass) throws BatchConnectionException {
    if (returnClass != null) {
        return webTarget.request().get(returnClass);
    } else {
        Response response = webTarget.request().get();
        validateResponseStatus(response.getStatus());
        return response;
    }
}

public boolean isRestAccessible() {
    boolean accessible = true;
    try {
        batchTaskUtils.sendRequest(batchTaskUtils.getBatchWebTarget().path(Resources.ROOT), String.class,
                BatchTaskUtils.RequestType.GET);
    } catch (BatchConnectionException e) {
        accessible = false;
    }
    return accessible;
}

不作为扩展工作:

public class App extends GuiceServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        super.contextInitialized(servletContextEvent);
        // stuck here
        isRestAccessible();
    }
}

按预期工作:

public class App extends GuiceServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        super.contextInitialized(servletContextEvent);
        ExecutorService loggingExecutor = Executors.newFixedThreadPool(1);
        loggingExecutor.execute(() -> {
            isRestAccessible();
        });
    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题