使用ClientResponse <t>时,是否需要RESTEasy RegisterBuiltin.register

时间:2016-02-01 16:13:29

标签: jboss resteasy

我正在使用JBOSS app server和RESTEasy 2.3.6开发REST客户端。我在代码的开头包含了以下行:

RegisterBuiltin.register(ResteasyProviderFactory.getInstance());

这是片段的其余部分:

    RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
    DefaultHttpClient httpclient = new DefaultHttpClient(); 

    httpclient.getCredentialsProvider().setCredentials(
        new AuthScope(host, port, AuthScope.ANY_REALM), new UsernamePasswordCredentials(userid,password));
    ClientExecutor executor = createAuthenticatingExecutor(httpclient, host, port);

    String uriTemplate = "http://myhost:8080/webapp/rest/MySearch";
    ClientRequest request = new ClientRequest(uriTemplate, executor);
    request.accept("application/json").queryParameter("query", searchArg);

    ClientResponse<SearchResponse> response = null;
    List<MyClass> values = null;
    try
    {
        response = request.get(SearchResponse.class);
        if (response.getResponseStatus().getStatusCode() != 200)
        {
            throw new Exception("REST GET failed");
        }
        SearchResponse searchResp = response.getEntity();
        values = searchResp.getValue();
    }
    catch (ClientResponseFailure e) 
    {
        log.error("REST call failed", e);
    }
    finally
    {
        response.releaseConnection();
    }

private ClientExecutor createAuthenticatingExecutor(DefaultHttpClient client, String server, int port)
{
    // Create AuthCache instance
    AuthCache authCache = new BasicAuthCache();

    // Generate BASIC scheme object and add it to the local auth cache
    BasicScheme basicAuth = new BasicScheme();
    HttpHost targetHost = new HttpHost(server, port);
    authCache.put(targetHost, basicAuth);

    // Add AuthCache to the execution context
    BasicHttpContext localContext = new BasicHttpContext();
    localContext.setAttribute(ClientContext.AUTH_CACHE, authCache);

    // Create ClientExecutor.
    ApacheHttpClient4Executor executor = new ApacheHttpClient4Executor(client, localContext);
    return executor;
}

以上是使用ClientRequest / ClientResponse&lt; T&gt;的相当简单的客户端。技术。记录在案here。上面的代码确实有效(只省略了一些简单的变量声明,如主机和端口)。从JBOSS文档中我不清楚我是否需​​要首先运行RegisterBuiltin.register。如果我完全删除该行 - 我的代码仍然有效。考虑到我采用的方法,我是否真的需要包含寄存器方法调用? Docs说我需要每个VM运行一次。其次,如果我需要呼叫它,在同一个VM中多次呼叫是否安全?

注意:我知道有更新版本的RESTEasy for JBOSS,我们还没有。

0 个答案:

没有答案
相关问题