How to Create a Web Service Using JBoss and JAX-RS

You’re the head of development at a new credit card company and your team has built a great product.

Well…almost

You can’t send anyone a new card until you verify their credit history.

And if you build that functionality yourself, it will slow down development.

So what do you do?

You borrow the functionality from a company that has already figured this out.

And to do that, you use a web service.

Why Do We Use Web Services?

Web services help us build software quickly because they give us access to extra functionality without writing more code.

web service is a method that our application can use over the internet.

How Do We Use Web Services?

Our Final Architecture

Web Service

What You’ll Need

Create Data Model

  1. Open JBoss Developer Studio
  2. Create a new Maven project called simple-data-model (Steps here)
  3. Create a class called CreditReport
    • Make it serializable
      public class CreditReport implements Serializable
    • Add a default serial version id
      private static final long serialVersionUID = 1L;
    • Add a constructor
      public CreditReport(){
      }
  4. Create fields to store credit report data
    • Create three variables
      private String fullname;
      private String ssn;
      private Integer creditScore;
    • Create getters & setters for each field
      • Click Source -> Generate Getters & Setters
        Screen Shot 2017-05-04 at 9.19.07 AM.png
        Screen Shot 2017-05-04 at 9.20.03 AM
  5. Build the project
    • Right click project -> Run as -> Maven Build
      Goals: clean install

Create a REST Web Service

  1. Create a new maven project called simple-rest-service
  2. Update Maven
    • In your pom.xml file, click the pom.xml tab and change the packaging type
      <packaging>war</packaging>
    • Add dependencies: resteasy-jaxrs (provided), simple-data-model
      Screen Shot 2017-05-04 at 9.23.12 AM
    • Right click your project -> Maven -> Update Project
  3. Add web descriptors
    • In the /src/main/webapp/WEB-INF directory, create a file called jboss-web.xml
      <?xml version="1.0" encoding="UTF-8"?> 
      <jboss-web> 
          <context-root>simple-ejb-project</context-root>
      </jboss-web>
    • In the same directory, create a file called web.xml

      <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
          <servlet-mapping>
              <servlet-name>javax.ws.rs.core.Application</servlet-name>
              <url-pattern>/rest/*</url-pattern>
          </servlet-mapping>
      </web-app>
  4. Create a class called CreditReportService
    • Add @Path annotation
      @Path("/creditReport")
      public class CreditReportService
    • Add a method called getCreditReport
      @GET
      @Path("/get")
      @Produces("application/json")
      public CreditReport getCreditReport(
                  @QueryParam("fullname") String fullname,
                  @QueryParam("ssn") String ssn){
      
          CreditReport creditReport = new CreditReport();
          creditReport.setFullname(fullname);
          creditReport.setSsn(ssn);
      
          Random rand = new Random();
          int randomCreditScore = rand.nextInt((700 - 400) + 1) + 400;
          creditReport.setCreditScore(new Integer(randomCreditScore));
      
          return creditReport;
      }

Test Web Service

  1. To send a web request, point your browser at
    http://localhost:8080/simple-rest-service/rest/creditReport/get?fullname=YourName&ssn=666121923
    • You should get a response as a JSON dictionary

Great! Let’s review what we just did.

Create Data Model

  • We created a Credit Report model to send data from our web service

Create a REST Web Service

  • We added a descriptor to tell JBoss that we have a REST service (web.xml)
  • We added RESTEasy dependencies
    • REST – a set of rules for creating web services
    • JAX-RS – a Java API specification for REST
    • RESTEasy – a Java framework for building REST Web services. It is an implementation of JAX-RS
  • We added JAX-RS annotations to create a CreditReport web service
    • @Path – the path to our web service (/creditReport/get)
    • @GET – this method will be used to retrieve data
    • @Produces – the format of the data sent back to the client
      • JSON (JavaScript Object Notation) – a format for transmitting data
    • @QueryParam – this method has two parameters

Test Web Service

  • To access our web service, we took the base URL,
    http://localhost:8080/simple-web-service

    the URL pattern (web.xml)

    /rest

    the path to our method (@Path)

    /creditReport/get

    and our parameters

    ?fullname=YourName&ssn=666121923

    to get our final URL

    http://localhost:8080/simple-rest-service/rest/creditReport/get?fullname=YourName&ssn=666121923
  • Note: Usually an application would call the getCreditReport method, but for this example, we are viewing it in the browser.

What’s a best practice for Web Services?

It’s a good practice to choose JSON over XML to send data over a web service.

Since JSON is a more compact data format, your data will bent sent and processed faster than if you used XML.

So…

  1. Web services give us access to extra functionality without writing more code
  2. We can use JAX-RS annotations to define a RESTful web service
  3. Use JSON over XML to send/receive data quickly

Source Code & Useful Links

  1. Project Source Code
  2. REST & JAX-RS Summary
  3. Other Web Service Types

That’s all for today!

Happy Coding,

-T.O.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑