2015-09-03 95 views
1

我正在構建一個實現JSF作爲前端框架的java EE應用程序。該應用程序需要使用一個RESTFul服務(我擁有它作爲一個單獨的應用程序託管)。從JSF調用REST客戶端

我發現了一些關於實現Restlet的體面教程,但是我仍然錯過了最後一步。用戶應該能夠點擊一個按鈕,並且由本地REST客戶端將POST提交給服務器並評估響應。我非常感謝有關如何實現這一目標的建議。

+0

我個人會開發一個服務接口來訪問您感興趣的REST函數,然後使用REST客戶端來實現它以訪問服務。然後,用通用的方式開發JSF bean並提供對服務的訪問。順便說一句,你想如何管理授權? –

+0

*「A **本地** REST客戶端」* Huh?究竟在哪裏?您制定問題的方式給人的印象是,您希望在客戶端使用JavaScript,而不是服務器端的Java。在任何情況下..這是食品閱讀,可能是一個重複:http://stackoverflow.com/questions/29982657/how-to-implement-jax-rs-restful-service-in-jsf-framework – BalusC

回答

0

從JSF託管Bean使用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; 
    } 
0

謝謝您的意見。我在決定在哪裏/如何在集成到應用程序B(REST,沒有GUI)的應用程序-A(JSF)中實現REST客戶端掙扎。

我的決定是爲了實現它在通過EJB服務層通過的Xtreme騎自行車的人的建議,並揭露那些不基於JSF作爲How to implement JAX-RS RESTful service in JSF framework

進一步澄清授權使用JAXB的其他應用程序我的控制方法也相當參與,但它將是第三方api和java安全框架的結合。

+0

我想你如果你喜歡EJB3,需要使用wildfly swarm –