gpt4 book ai didi

jboss - 在 JBoss7 上的 JAX-RS 资源中注入(inject) EJB

转载 作者:行者123 更新时间:2023-12-01 09:47:47 24 4
gpt4 key购买 nike

我想知道为什么 ejb 注入(inject) JAX-RS 资源(JBoss7 上的 RestEasy)不起作用。 EJB 不是 war 的一部分,而是它自己的 EJB jar,但我认为这不应该是问题所在。我被迫执行 ctx.lookups “解决方法”,这并不漂亮。我是不是遗漏了什么或者真的不支持像那样注入(inject) EJB?下面的示例不适用于 JBoss,但适用于 Glassfish(遗憾的是我必须在 JBoss 上运行我的应用程序)

Path("x")
@RequestScoped
public class UserResource {

@Inject // CDI not working too
private Service service1;
@EJB
private Service service2;

private Service service3;


@GET
@Path("y")
public Response authenticate(@Context HttpHeaders headers) {
System.out.println("null == " + service1);
System.out.println("null == " + service2);

service3 = annoyingLookup(Service.class);
System.out.println("null != " + service3);
}

private <T> T annoyingLookup(Class<T> clazz) {
...
ctx.lookup("java:app/module/" + classzz.getSimpleName());
}

最佳答案

以下对我有用。

RESTEasy 根上下文:

package com.foo.rest;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class RestServiceLocator extends Application {

}

STLS bean :

package com.foo.rest;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

@Path("/foo")
@Stateless
@LocalBean //Note: @Local(FooResource.class) does not let RESTEasy to load EJB!
public class FooResourceBean implements FooResource {

@EJB
private FooResourceBean h; // Works!

/**
* http://localhost:8080/webapp/rest/foo/baa
*
*/
@GET
@Path("/baa")
@Produces("application/json")
@Override
public Response baa() {

String json = "{ \"baa\" : [ " +
" { \"icon\":\"source1.png\" , \"description\":\"Source 1\" }, " +
" { \"icon\":\"source2.png\" , \"description\":\"Source 2\" }, " +
" { \"icon\":\"source3.png\" , \"description\":\"Source 3\" } " +
" ]}\";";

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

}

关于jboss - 在 JBoss7 上的 JAX-RS 资源中注入(inject) EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com