Jboss 使用ClientResponse时是否需要RESTEasy RegisterBuiltin.register<;T>;

Jboss 使用ClientResponse时是否需要RESTEasy RegisterBuiltin.register<;T>;,jboss,resteasy,Jboss,Resteasy,我正在使用JBOSS app server和RESTEasy 2.3.6开发一个REST客户端。我在代码的开头包含了以下行: RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 以下是片段的其余部分: RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); DefaultHttpClient httpclient = new D

我正在使用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;
}
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
DefaultHttpClient httpclient=新的DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(
新的AuthScope(主机、端口、AuthScope.ANY_领域)、新的UsernamePasswordCredentials(userid、password));
ClientExecutor executor=CreateAuthenticationExecutor(httpclient、主机、端口);
字符串uriTemplate=”http://myhost:8080/webapp/rest/MySearch";
ClientRequest请求=新的ClientRequest(uriTemplate,executor);
request.accept(“application/json”).queryParameter(“query”,searchArg);
ClientResponse-response=null;
列表值=空;
尝试
{
response=request.get(SearchResponse.class);
if(response.getResponseStatus().getStatusCode()!=200)
{
抛出新异常(“REST获取失败”);
}
SearchResponse searchResp=response.getEntity();
values=searchResp.getValue();
}
捕捉(ClientResponseE)
{
日志错误(“REST调用失败”,e);
}
最后
{
response.releaseConnection();
}
私有客户端执行器CreateAuthenticationExecutor(默认HttpClient客户端、字符串服务器、int端口)
{
//创建AuthCache实例
AuthCache AuthCache=new BasicAuthCache();
//生成基本方案对象并将其添加到本地身份验证缓存
碱性血红素碱性血红素=新碱性血红素();
HttpHost targetHost=新的HttpHost(服务器、端口);
authCache.put(targetHost,basicAuth);
//将AuthCache添加到执行上下文
BasicHttpContext localContext=新的BasicHttpContext();
setAttribute(ClientContext.AUTH\u缓存,authCache);
//创建客户执行器。
ApacheHttpClient4Executor executor=新的ApacheHttpClient4Executor(客户端,本地上下文);
返还执行人;
}
上面是一个使用ClientRequest/ClientResponse技术的相当简单的客户端。这是有案可查的。上面的代码确实有效(只遗漏了一些无关紧要的变量声明,如主机和端口)。从JBOSS文档中我不清楚是否需要先运行RegisterBuiltin.register。如果我完全删除该行,我的代码仍然可以运行。考虑到我所采取的方法,我真的需要包括register方法调用吗?文档说我需要在每个虚拟机上运行一次。其次,如果我被要求调用它,在同一个VM中多次调用是否安全

注意:我确实了解到有新版本的RESTEasy for JBOSS,但我们还没有