zoukankan      html  css  js  c++  java
  • JAVA CDI 学习(5)

    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<CityDto> findCity() {
            JAXBElement<CityDto> result = new JAXBElement<CityDto>(new QName(
                    XMLNS_NAMESPACE, ROOT_NODE), CityDto.class, cityInvoker
                    .getCity().getCities().get(0));
            return result;
        }
    ...
    
  • 相关阅读:
    PLSQL13
    01.Spring引入
    验证码重构
    短信验证码登录思路
    记住我 token保存到数据库
    图形验证码及其重构
    个性化用户认证流程
    01.Spring Security初识,表单认证
    堆和栈的区别
    系统分析与设计第二次作业
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/how-to-inject-a-EJB-instance-to-RESTFul-Service.html
Copyright © 2011-2022 走看看