【问题标题】:JAX-RS REST service implementation in EJB J2EEEJB J2EE 中的 JAX-RS REST 服务实现
【发布时间】:2013-11-24 15:45:52
【问题描述】:

寻找使用 JAX-RS 实现 EJB 3 REST 服务的示例。希望拥有 EJB 的事务功能并能够从其他 J2EE 应用程序以及 AJAX 应用程序(Web、移动等)调用 EJB。

【问题讨论】:

    标签: rest jakarta-ee ejb jax-rs


    【解决方案1】:

    服务实现为无状态会话 bean。出于说明目的,使用单例 bean 来模拟 DAO。

    PUT 示例:

    http://mydomain/MyApp/rest/carbean/savecarorder
    

    内容类型:应用程序/json

    JSON:                   {"equipmentId":"570674","status":"L","operation":"PS"}

    GET 示例(PUT 操作后插入或更新):

    http://mydomain/MyApp/rest/carbean/getcarorder?equipmentId=570674
    

    结果:                {"status":"L","operation":"PS","equipmentId":"570674"}

    package com.samnunnally.services;
    
    import javax.ejb.EJB;
    import javax.ejb.LocalBean;
    import javax.ejb.Stateless;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.PUT;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.QueryParam;
    import javax.ws.rs.core.MediaType;
    
    import com.samnunnally.CarManager;
    import com.samnunnally.CarOrder;
    /**
     * Session Bean implementation class CarService
     */
    @Stateless(mappedName = "ejb/CarService")
    @LocalBean
    @Path ("/carbean")
    public class CarService {
    
        @EJB
        CarManager carManager;
    
        @GET
        @Produces({ MediaType.APPLICATION_JSON })
        @Path("/getcarorder")
        public CarOrder getCar(@QueryParam("equipmentId") String equipmentId) {
    
            return carManager.getCarOrder(equipmentId);
        }
    
        @Path("/savecarorder")
        @PUT
        @Consumes({ "application/xml", "application/json" })
        public String saveCarOrder(CarOrder carOrder) {
    
            carManager.saveCarOrder(carOrder);
    
            return "true";
        }
    
    }
    

    这个需要添加到ear中war文件的web.xml文件中:

        <servlet>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
        </servlet>
        <servlet-mapping>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
            <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    

    管理器模拟数据层

    package com.samnunnally.managers;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.ejb.LocalBean;
    import javax.ejb.Singleton;
    
    import com.samnunnally.model.CarOrder;
    
    /**
     * Session Bean implementation class CarManager
     *
     * @author Sam Nunnally
     *
     */
    @Singleton(mappedName = "ejb/CarManager")
    @LocalBean
    public class CarManager {
    
        /*
         * this should be a database of some sort
         */
        private Map<String, CarOrder> carOrders = null;
    
        public CarOrder getCarOrder(String equipmentId) {
            return getCarOrders().get(equipmentId);
        }
    
        public void saveCarOrder(CarOrder carOrder) {
            getCarOrders().put(carOrder.getEquipmentId(), carOrder);
        }
    
        private Map<String, CarOrder> getCarOrders(){
            if(carOrders == null){
                carOrders = new HashMap<String, CarOrder>();
            }
    
            return carOrders;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多