ITPub博客

首页 > IT职业 > IT图书 > JAVA CDI 如何向RESTFul Service中注入EJB实例

JAVA CDI 如何向RESTFul Service中注入EJB实例

IT图书 作者:lenghuo 时间:2021-09-09 09:12:10 0 删除 编辑

RESTFul Service中如果要注入EJB实例,常规的@Inject将不起作用,在Jboss中,应用甚至都启动不起来(因为@Inject注入失败),解决方法很简单:将@Inject换成@EJB

参考代码:

CityInvoker是一个Stateless的EJB

package test;
 
import javax.ejb.Stateless;
import ...
 
@Stateless
public class CityInvoker {
 
    public CityResponse getCity() {
        CityResponse cityResponse = null;
        CityService cityService = ApplicationContextUtils.getCityService();
        try {
            cityResponse = cityService.findCityByCode(RequestBuilder
                    .buildCityFindRequest());
        } catch (LMSException e) {
            e.printStackTrace();
        }
        return cityResponse;
    }

 

下面是在RESTFul Service中注入的示例:

package test.rest;
 
import javax.ejb.EJB;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
 
 
@Path("/")
public class TestService {
 
    final String XMLNS_NAMESPACE = "http://yjmyzz.cnblogs.com/rest/service";
    final String ROOT_NODE = "root";
 
    @EJB
    CityInvoker cityInvoker;
 
    @GET
    @Path("/findCity")
    @Produces(MediaType.APPLICATION_XML)
    public JAXBElement findCity() {
        JAXBElement result = new JAXBElement(new QName(
                XMLNS_NAMESPACE, ROOT_NODE), CityDto.class, cityInvoker
                .getCity().getCities().get(0));
        return result;
    }

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2989/viewspace-2800439/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-13

  • 博文量
    68
  • 访问量
    811