Ошибка при вызове локального EJB в weblogic 12 с использованием JAX-RS - PullRequest
0 голосов
/ 16 декабря 2018

Я делаю корпоративное Java-приложение с maven и подмодулями.У меня есть следующее:

  • EJB-модуль
  • Военный модуль
  • EAR-модуль

Мой EJB-модуль имеет:

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

Мой веб-модуль имеет:

@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 и правильно развернут на сервере 12.2.1.

Но когда я проверяю этоrest service, есть исключение nullpointer, так как serviceBean не инстанцируется в классе TestResource.

В моем модуле EAR у меня есть зависимости этих подмодулей и модулей в maven-ear-plugin.

Я пытался с weblogic-ejb-jar.xml с именем компонента:

<?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>

Но все равно не работает.Это странно, потому что, если я создаю другой веб-модуль, такой как веб-служба SOAP, этот вызов локального EJB работает.

...