使用JAX-RS在Weblogic 12中调用本地EJB时出错

时间:2018-12-16 00:06:41

标签: maven jax-rs weblogic ejb-3.0 java-ee-7

我正在做一个带有maven和子模块的Java企业应用程序。我有以下内容:

  • EJB模块
  • 战争模块
  • EAR模块

我的EJB模块具有:

@LocalBean
@Stateless(name = "serviceBeanEJB")
public class ServiceBean {
    public ResponseBean foo(RequestBean request) {
        // code here
    }
}

我的Web模块具有:

@Stateless
@Path("rest-resource")
@Produces({ MediaType.APPLICATION_JSON })
public class TestResource {

    @EJB(beanName = "serviceBeanEJB")
    private ServiceBean serviceBean;

    @POST
    @Path("res1")
    @Consumes({ MediaType.APPLICATION_JSON })
    public Response resourceFunction(@Context HttpHeaders httpHeaders, RequestBean request) throws Exception {
        ResponseBean response = serviceBean.foo(request);
        String result = new ObjectMapper().setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"))
            .writerWithDefaultPrettyPrinter().writeValueAsString(response);
        return Response.ok().entity(result).build();
    }
}

这是由EAR模块打包的,并且已正确部署在weblogic服务器12.2.1上。

但是,当我测试此REST服务时,由于没有在TestResource类中实例化serviceBean,因此会出现nullpointer异常。

在EAR模块中,我具有那些子模块和maven-ear-plugin中的模块的依赖关系。

我尝试了使用weblogic-ejb-jar.xml和Bean的名称,如下所示:

<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.5/weblogic-ejb-jar.xsd"
              xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar">
  <weblogic-enterprise-bean>
    <ejb-name>serviceBeanEJB</ejb-name>
    <stateless-session-descriptor/>
  </weblogic-enterprise-bean>
</weblogic-ejb-jar>

但是仍然不起作用。这很奇怪,因为如果我创建另一个Web模块(如SOAP Web服务),则对本地EJB的此调用将起作用。

0 个答案:

没有答案