Jboss 使用ClientResponse时是否需要RESTEasy RegisterBuiltin.register<;T>;
我正在使用JBOSS app server和RESTEasy 2.3.6开发一个REST客户端。我在代码的开头包含了以下行: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
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,但我们还没有