首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EJB注入Rest异常处理程序

将EJB注入Rest异常处理程序
EN

Stack Overflow用户
提问于 2015-11-12 21:06:45
回答 1查看 156关注 0票数 0

我试图将本地EJB注入到Rest异常处理程序中,但得到了以下错误。

代码语言:javascript
复制
javax.naming.NameNotFoundException: Name [Test] is not bound in this Context. Unable to find [Test].

maven Web项目在Apache-tomee 1.7.1-jaxrs上运行。

EJB:

代码语言:javascript
复制
@Stateless(name = "Test")
public class Test {

    public void sayHello() {
        System.out.println("Hello");
    }

}

异常处理程序,据我所知,我必须将其视为EJB的客户端。

代码语言:javascript
复制
@Provider
public class TestExceptionHandler implements ExceptionMapper<Throwable> {

    @Context
    HttpServletRequest request;

    @Override
    public Response toResponse(Throwable throwable) {

        InitialContext context;
        try {
            context = new InitialContext();
            Test test = (Test) context.lookup("Test");
            test.sayHello();

        } catch (NamingException ex) {
            ex.printStackTrace();
        }        


        return Response.ok().build();
    }    

}

对于查找,我还尝试执行以下操作:context.lookup("java:comp/env/Test");

http://openejb.apache.org/jndi-names.html文档很难理解。我也尝试了下面的方法,这是我第一次尝试。http://blog.iadvise.eu/2015/06/01/jee-using-ejb-and-context-annotations-in-a-jax-rs-provider-class/

我是否在tomee服务器或我的代码中丢失了任何配置?

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 22:54:55

EJB名称空间用于java:comp/env引用,而不是EJB。您尚未在任何地方声明EJB引用。

使用lookup("java:module/Test")直接查找EJB可能是最简单的(假设EJB打包在war中,否则使用java:app/ejbmodname/Test),因为JAX-RS在默认情况下不支持EE注入。要声明EJB引用,您需要使提供者类成为EJB本身或CDI类(向模块添加beans.xml ),然后将一个字段声明为@EJB(name="Test") Test myBean;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33672134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档