JavaEE 7
Client API for JAX-RS API is useful to access the RESTful web services. Basic
steps:
- Get the instance of javax.ws.rs.client.Client class (entry point for invoking RESTful web services).
 - Create an instance of javax.ws.rs.client.WebTarget using the instance of Client class (used to invoke a RESTful web service at some location or URI).
 - Populate the target with the required data (e.g. MIME type, post data, query parameters), and create a request of appropriate HTTP method type which would be an instance of javax.ws.rs.client.Invocation.
 - Obtain the response from the desired RESTful web service via javax.ws.rs.client.Invocation object.
 
Let's
suppose that we have the following JAX-RS resource:
import
javax.ws.rs.Produces;
import
javax.ws.rs.GET;
import
javax.ws.rs.Path;
@Path("helloworld")
public class
HelloWorldResource {
 @GET
 @Produces("text/plain") // default:
*/*
 public String helloWorld() {
  return "Hello, World!";
 }
}
Configured
as:
import
javax.ws.rs.ApplicationPath;
import
javax.ws.rs.core.Application;
@ApplicationPath("webresources")
public class
ApplicationConfig extends Application {
}
Supposing
that our application is named JaxrsSimpleJSFClient_EE7, our resource is
available at:
http://localhost:8080/JaxrsSimpleJSFClient_EE7/webresources/helloworld
From a CDI
managed bean we can access this resource like below:
@Named
@ViewScoped
public class
ClientBean implements Serializable {
 private final Client jaxrsClient;
 // for simple demo, URL is hard-coded
 private final String jaxrsResource =
"http://localhost:8080/JaxrsSimpleJSFClient_EE7/webresources/helloworld/";
 private String hello;
 public ClientBean() {
  // get
the instance of client which will be entry point to invoking services
  jaxrsClient = ClientBuilder.newClient();
 }
 public void sayHelloWorldAction() {
  // targeting the JAX-RS serivce we want to
invoke by capturing it in WebTarget instance
  WebTarget webTarget =
jaxrsClient.target(jaxrsResource);
  //
build the request (e.g. a GET request)
  Invocation
invocation = webTarget.request("text/plain").buildGet();
  // invoke the request
  Response response = invocation.invoke();
  // set the response in the bean property
  this.hello =
response.readEntity(String.class);
 }
 public String getHello() {
  return
hello;
 }
 public void setHello(String hello) {
  this.hello = hello;
 }       
}
A simple JSF
page for test:
<h:form>
 <h:commandButton value="JAX-RS Hello
World!" action="#{clientBean.sayHelloWorldAction()}"/>
 #{clientBean.hello}
</h:form>
The complete application is available here.
Read also:






JSF 2 Tutorials at www.mkyong.com     
JavaServer Faces (JSF) Tutorial      

















Niciun comentariu :
Trimiteți un comentariu