2013-11-24 79 views
0

尋找一個使用JAX-RS實現EJB 3 REST服務的例子。希望擁有EJB的事務功能,並能夠從其他J2EE應用程序以及AJAX應用程序(Web,移動設備等)調用EJB。EJB中的JAX-RS REST服務實現

回答

0

服務實現爲無狀態會話bean。爲了說明的目的,使用單例bean來模擬DAO。

PUT例如:

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

的ContentType:應用/ JSON

JSON:{ 「equipmentId」: 「570674」, 「狀態」: 「L」, 「操作」: 「PS」 }

GET例子(PUT操作之後插入或更新):

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

結果:{ 「狀態」: 「L」, 「操作」: 「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"; 
    } 

} 

這需要加入到戰爭的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; 
    } 
}