0
尋找一個使用JAX-RS實現EJB 3 REST服務的例子。希望擁有EJB的事務功能,並能夠從其他J2EE應用程序以及AJAX應用程序(Web,移動設備等)調用EJB。EJB中的JAX-RS REST服務實現
尋找一個使用JAX-RS實現EJB 3 REST服務的例子。希望擁有EJB的事務功能,並能夠從其他J2EE應用程序以及AJAX應用程序(Web,移動設備等)調用EJB。EJB中的JAX-RS REST服務實現
服務實現爲無狀態會話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;
}
}