2013-11-24 2 views
0

Ищете пример использования JAX-RS для реализации службы EJB 3 REST. Хотелось бы иметь транзакционную функциональность EJB и иметь возможность звонить EJB из других приложений J2EE, а также из приложений AJAX (веб-сайт, мобильный и т. Д.).Реализация службы JAX-RS REST в EJB J2EE

ответ

0

Служба, выполненная в виде сессионного компонента без состояния. Используется одноэлементный компонент для имитации DAO для иллюстрации.

PUT пример:

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

ТипСодержимого: применение/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; 
    } 
} 
Смежные вопросы