加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用CXF创建REST WEBSERVICE

发布时间:2020-12-16 23:47:15 所属栏目:安全 来源:网络整理
导读:简单小结下CXF跟REST搭配webservice的做法,直接举代码为例子: 1 order.java ? package com.example.rest; import javax.xml.bind.annotation.XmlRootElement; ? 这个order可以在service中使用就代表当前的类,然后就是简单地调用关系,相当于操作的是json和x
简单小结下CXF跟REST搭配webservice的做法,直接举代码为例子:

1 order.java
? package com.example.rest;

import javax.xml.bind.annotation.XmlRootElement;


?这个order可以在service中使用就代表当前的类,然后就是简单地调用关系,相当于操作的是json和xml格式的数据,返回的是把这个值当做,相应的json或者xml格式输出输出

@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;
??? }

}

2 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") //xml文件的根节点 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; ??? } } 3 orderinof.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(); } 4 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的配置 ?? <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的配置记得加上CXF配置 ? <?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> 5 最后运行 ? htttp://localhost:8085/reset/services/order/all 返回所有ORDER列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读