Technology: ADF11g
Developed in: JDeveloper 11.1.1.3.0
Used database schema: none
Summary
In this blog a solution is provided how to create a RESTful web service that returns objects. One web service will be created with 2 methods to return an Employee instance and a list of Employee instances.This blog is part of a sequence of 3 blogs:
- How to create a RESTful web service that returns objects
- How to create a web service client
- How to create web service based ADF pages
Step 1
Create a new generic application in JDeveloper:Step 2
Download the 'zip of Jersey' of the page:http://jersey.java.net/nonav/documentation/latest/chapter_deps.html
Step 3
Extract the zip and copy the following jar files to the new created application (in a lib folder):- Asm-3.1.jar
- Jersey-core-1.5.jar
- Jersey-server-1.5.jar
- Jersey-json-1.5.jar
Step 4
Open the project properties of the project in the new application and add these jar files (not the JAX-WS Web Services library will be added automatically later on):Step 5
Create an Employee class which represents one employee (of the HR schema). Create accessors for all class variables. A second constructor is added so an employee can be created and initialized in one call.Add above the class name the annotation XmlRootElement of class javax.xml.bind.annotation.XmlRootElement.
package nl.hr.demo.dataObjects;
import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
private int employeeId;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
private Date hireDate;
private String jobId;
private double salary;
private double commissionPct;
private int managerId;
private int departmentId;
public Employee() {
super();
}
public Employee(int employeeId, String firstName, String lastName, String email, String phoneNumber, Date hireDate, String jobId, double salary, double commissionPct, int managerId, int departmentId) {
super();
setEmployeeId(employeeId);
setFirstName(firstName);
setLastName(lastName);
setEmail(email);
setPhoneNumber(phoneNumber);
setHireDate(hireDate);
setJobId(jobId);
setSalary(salary);
setCommissionPct(commissionPct);
setManagerId(managerId);
setDepartmentId(departmentId);
}
// For all class variables create accessors
public void setXXX (XXX xxx) {
this.xxx = xxx;
}
public XXX getXXX () {
return xxx;
}
}
Step 6
Create the web service class that returns one or a list of employees. If a web service contains several (GET) methods each method should have its own path.package nl.hr.demo.webservices;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import nl.hr.demo.dataObjects.Employee;
@Path("EmployeesService")
public class EmployeesServices {
public EmployeesServices() {
super();
}
@GET
@Path("getEmployeeById")
@Produces("application/json")
public Employee getEmployeeById(@QueryParam("id")int id) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
try {
if (id == 100) {
return new Employee(id, "Steven", "King", "SKING", "515.123.4567", sdf.parse("17-06-1987"), "AD_PRES", 24000, -1, -1, 90);
} else if (id == 101) {
return new Employee(id, "Neena", "Kochhar", "NKOCHHAR", "515.123.4568", sdf.parse("21-09-1989"), "AD_VP", 17000, -1, 100, 90);
}
return new Employee(id, "Lex", "De Haan", "LDEHAAN", "515.123.4569", sdf.parse("13-01-1993"), "AD_VP", 17000, -1, 100, 90);
} catch (Exception e) {
return null;
}
}
@GET
@Path("getAllEmployees")
@Produces("application/json")
public List<Employee> getAllEmployees() {
List<Employee> result = new ArrayList<Employee> ();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
try {
result.add(new Employee(100, "Steven", "King", "SKING", "515.123.4567", sdf.parse("17-06-1987"), "AD_PRES", 24000, -1, -1, 90));
result.add(new Employee(101, "Neena", "Kochhar", "NKOCHHAR", "515.123.4568", sdf.parse("21-09-1989"), "AD_VP", 17000, -1, 100, 90));
result.add(new Employee(102, "Lex", "De Haan", "LDEHAAN", "515.123.4569", sdf.parse("13-01-1993"), "AD_VP", 17000, -1, 100, 90));
} catch (Exception e) {
return new ArrayList<Employee> ();
}
return result;
}
}
The @Path annotation above the class definition contains a warning:
If you click on this warning a jersey servlet is added to the web.xml:
<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/jersey/*</url-pattern>
</servlet-mapping>
Step 7
Now the EmployeeService can be created so it can be deployed.Right click in the Application Navigator on the EmployeeService java class and choose Create Web Service:
- Give the web service a name for example EmployeeWebService
- Choose SOAP 1.1 Binding
- Leave all other options to their default value
@WebService(name = "EmployeesWeb", serviceName = "EmployeesWebService", portName = "EmployeesWebPort")
<servlet>
<servlet-name>EmployeesWebPort</servlet-name>
<servlet-class>nl.hr.demo.webservices.EmployeesServices</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EmployeesWebPort</servlet-name>
<url-pattern>/EmployeesWebPort</url-pattern>
</servlet-mapping>
Step 8
Deploy the application as a EAR file to the weblogic server:If you click on the Service and go to the testing tab you can test the webservice:
If we test getEmployeeById and query id 101 we get:
With result:
And test getAllEmployees results in:
2015-10-8leilei
BeantwoordenVerwijderennike trainers
Michael Kors Outlet
coach outlet
ugg boots sale
Kobe Bryant Shoes On Sale
michael kors handbags
nike shorts,nike hoodies,nike town,new nike shoes,nike tennis shoes,air max 97,nike shop,nike basketball
michael kors outlet online
ray-ban wayfarer
Louis Vuitton Handbags
Canada Goose Jackets/Coats And Parka Online
Michael Kors Handbags Clearance
Ugg Boots Outlet Clearance,Cheap Uggs On Sale Discount For Women
uggs sale
Michael Kors Outlet Online Free Shipping
michael kors outlet
canada goose jackets
michael kors uk
michael kors uk
Coach Factory Outlet Store Online
Jordan 4 Retro For Sale
Coach Outlet Coach factory
michael kors bags
ray-ban sunglasses,ray ban sunglasses,ray bans,rayban,ray ban wayfarer,raybans,ray ban glasses,ray ban aviators,ray ban clubmaster,ray ban eyeglasses,cheap ray bans,ray bans sunglasses,ray ban aviator,ray bands,fake ray bans,ray ban prescription glasses,ray ban outlet,ray ban canada,ray ban sunglasses sale,ray ban sale
Hollister Cheap Hollister Clothing Outlet Store
canada goose outlet,canada goose jackets,canada goose online,canada goose sale
coach outlet online
louis vuitton
ugg outlet
Michael Kors Handbags Outlet