Здесь мы продемонстрируем создание примера веб-сервиса REST, который прослушивает HTTP-запросы GET. Вы можете изучить код, чтобы получить больше информации и расширить функциональность.
Я опубликую полное приложение в ближайшее время, так что вы можете загрузить и попробовать приложение самостоятельно.
- Скачать CXF , Tomcat , JDK
- Установите CATALINA_HOME для tomcat, JAVA_HOME для Jdk и CXF_HOME для cxf.
- Добавьте корзину переменных JAVA_HOME, CATALINA_HOME и CXF_HOME в переменную PATH
- Создайте пустой проект с именем resttest
- Создайте пакет / папку com.example.rest
- Создайте следующие классы
Order.java
package com.example.rest; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "Order")public class Order { private int orderId; private String itemName; private int quantity; private String customerName; private String shippingAddress; public int getOrderId() { return orderId; } public void setOrderId(int orderId) { this.orderId = orderId; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getShippingAddress() { return shippingAddress; } public void setShippingAddress(String shippingAddress) { this.shippingAddress = shippingAddress; } }
OrderList.java
package com.example.rest; import java.util.ArrayList;import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "OrderList")public class OrderList { @XmlElement(name = "order", required = true) List <Order> orders; public List<Order> getOrder() { if (orders == null) { orders = new ArrayList<Order>(); } return this.orders; }}
OrderInfo.java
package com.example.rest; import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces; @Path("/Order/")public interface OrderInfo { @GET@Produces ("application/xml")@Path("{orderId}")public Order getOrder(@PathParam ("orderId") int officeId); @GET@Produces ("application/xml")@Path ("All")public OrderList getAllOrders(); }
OrderInfoImpl.java
package com.example.rest; import java.util.ArrayList;import java.util.List; public class OrderInfoImpl implements OrderInfo { List <Order> list = new ArrayList<Order>(); OrderInfoImpl(){ Order order = new Order(); order.setOrderId(1); order.setItemName("Soap"); order.setQuantity(120); order.setCustomerName("Sandeep"); order.setShippingAddress("Gurgaon"); list.add(0, order); order.setOrderId(2); order.setItemName("Shampoo"); order.setQuantity(50); order.setCustomerName("Sandeep"); order.setShippingAddress("Gurgaon"); list.add(1, order); } @Override public Order getOrder(int orderId) { System.out.println("Inside the GetOrder..."); if (list.get(0).getOrderId() == orderId) { return list.get(0); } else if (list.get(1).getOrderId() == orderId) { return list.get(1); } else { return null; } } @Override public OrderList getAllOrders() { OrderList details = new OrderList(); for(Order order : list) { details.getOrder().add(order); } return details; }}
cxf.xml
<beans xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml"> <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"> <jaxrs:server address="/" id="connectionService"> <jaxrs:servicebeans> <ref bean="order"> </ref></jaxrs:servicebeans> <jaxrs:extensionmappings> <entry key="xml" value="application/xml"> </entry></jaxrs:extensionmappings> </jaxrs:server> <bean class="com.javatch.rest.OrderImpl" id="order"></bean></import></import></import></beans>
web.xml<?xml version="1.0"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>RestWithCXF</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:com/javatch/rest/cxf.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class> org.apache.cxf.transport.servlet.CXFServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
- Скопируйте web.xml и cxf.xml в папку WEB-INF
- Скопируйте скомпилированные классы в папку WEB-INF / classes
- Запустите сервер Tomcat
- Перейдите по адресу http: // <ipaddress>: <порт> / resttest / services / order / all
или по
адресу http: // <ipaddress>: <port> / resttest / services / order /
С http://extreme-java.blogspot.com/2011/04/rest-webservice-using-cxf-first.html