我正在使用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,我们还没有。