从 JSF 调用 REST 客户端
invoking a REST client from JSF
我正在构建一个 java EE 应用程序,它将 JSF 实现为前端框架。该应用程序需要使用 RESTFul 服务(我拥有但作为单独的应用程序托管)。
我找到了一些关于实现 Restlet 的不错的教程,但是我仍然错过了最后一站。用户应该能够单击一个按钮,然后本地 REST 客户端将 POST 提交到服务器并评估响应。如果能提供有关如何实现此目标的建议,我将不胜感激。
感谢您的意见。我正在努力决定 where/how 在集成到应用程序 B(REST,无 GUI)的应用程序 A (JSF) 中实现 REST 客户端。
我的决定是按照 Xtreme Biker 的建议通过 EJB 在服务层中实现它,并使用 JAXB 为其他不基于 JSF 的应用程序公开我的控制器方法,如
澄清进一步的授权也很复杂,但它将是第 3 方 api 和 java 安全框架的组合。
从 JSF Managed Beans 使用 Apache HttpClient。
@ManagedBean(eager = true, name = "restAuthBean")
@SessionScoped
public class RESTAuthBean implements Serializable {
private CloseableHttpClient CLIENT = HttpClients.createDefault();
public UserModel saveUser(UserModel model) {
try {
CLIENT = HttpClients.createDefault();
LOGGER.debug("RESTAuthBean: save user called ");
HttpPost request = new HttpPost(AUTH_SERVICE_PATH + "user/register");
JSONObject json = new JSONObject();
json.put("firstname", model.getFirstname());
json.put("lastname", model.getLastname());
json.put("ip", model.getIp());
json.put("email", model.getEmail());
json.put("password", PasswordUtil.hashPassword(model.getPassword()));
StringEntity params = new StringEntity(json.toString(), "UTF-8");
request.addHeader("content-type", "application/json;charset=UTF-8");
request.addHeader("charset", "UTF-8");
request.setEntity(params);
HttpResponse response = (HttpResponse) CLIENT.execute(request);
HttpEntity entity = response.getEntity();
ObjectMapper mapper = new ObjectMapper();
model = mapper.readValue((EntityUtils.toString(entity)), UserModel.class);
} catch (IOException | ParseException ex) {
LOGGER.debug("RESTAuthBean: save user error " + ex.getLocalizedMessage());
}
return model;
}
我正在构建一个 java EE 应用程序,它将 JSF 实现为前端框架。该应用程序需要使用 RESTFul 服务(我拥有但作为单独的应用程序托管)。
我找到了一些关于实现 Restlet 的不错的教程,但是我仍然错过了最后一站。用户应该能够单击一个按钮,然后本地 REST 客户端将 POST 提交到服务器并评估响应。如果能提供有关如何实现此目标的建议,我将不胜感激。
感谢您的意见。我正在努力决定 where/how 在集成到应用程序 B(REST,无 GUI)的应用程序 A (JSF) 中实现 REST 客户端。
我的决定是按照 Xtreme Biker 的建议通过 EJB 在服务层中实现它,并使用 JAXB 为其他不基于 JSF 的应用程序公开我的控制器方法,如
澄清进一步的授权也很复杂,但它将是第 3 方 api 和 java 安全框架的组合。
从 JSF Managed Beans 使用 Apache HttpClient。
@ManagedBean(eager = true, name = "restAuthBean")
@SessionScoped
public class RESTAuthBean implements Serializable {
private CloseableHttpClient CLIENT = HttpClients.createDefault();
public UserModel saveUser(UserModel model) {
try {
CLIENT = HttpClients.createDefault();
LOGGER.debug("RESTAuthBean: save user called ");
HttpPost request = new HttpPost(AUTH_SERVICE_PATH + "user/register");
JSONObject json = new JSONObject();
json.put("firstname", model.getFirstname());
json.put("lastname", model.getLastname());
json.put("ip", model.getIp());
json.put("email", model.getEmail());
json.put("password", PasswordUtil.hashPassword(model.getPassword()));
StringEntity params = new StringEntity(json.toString(), "UTF-8");
request.addHeader("content-type", "application/json;charset=UTF-8");
request.addHeader("charset", "UTF-8");
request.setEntity(params);
HttpResponse response = (HttpResponse) CLIENT.execute(request);
HttpEntity entity = response.getEntity();
ObjectMapper mapper = new ObjectMapper();
model = mapper.readValue((EntityUtils.toString(entity)), UserModel.class);
} catch (IOException | ParseException ex) {
LOGGER.debug("RESTAuthBean: save user error " + ex.getLocalizedMessage());
}
return model;
}