EJB-аннотация не работает с Restful Services - PullRequest
0 голосов
/ 02 января 2019

Я решил несколько вопросов, связанных с этим, в Stackoverflow и реализовал свой код таким же образом, но аннотация @EJB у меня все еще не работает, когда я использую его из Restful Services.1. Внедрение EJB в службу Restful (NullPointerException) 2. Не удается внедрить класс EJB в Restfull WebService (JAX-RS)

Я использую сервер приложений websphere для развертыванияEAR и вызов службы отдыха из простого основного класса.В приведенном ниже коде я ожидаю, что myService инициализируется, но вместо этого он генерирует исключение NullPointerException.

Ниже приведен мой пример класса ресурсов:

 @Path(value = "/addresses")
 @Stateless(name = "MyFacade")
 public class MyFacade implements IMyFacade {

    @EJB
    private IMyService myService;

    @Override
    @POST
    @Path("/postReq")
    @Consumes("application/json")
    public Response myMethod(RequestDTO  requestDTO) {
        Long docId = myService.generate(requestDTO);
        return Response.status(201).entity(docId).build();
    }
 }

Интерфейс:

@Local
public interface IMyFacade {

    public Response myMethod(RequestDTO requestDTO);

}

Расширение приложения:

public class UtilitiesApplication extends Application {

    @Override
    public Set<Class< ? >> getClasses() {
        Set<Class< ? >> classes = new HashSet<Class< ? >>();
        classes.add(MyFacade.class);
        return classes;
    }

}

Класс обслуживания:

@Stateless
public class MyService implements IMyService {

    //Implementation of generate() method.
}

Web.xml Entry

<servlet>
        <description>
        JAX-RS Tools Generated - Do not modify</description>
        <servlet-name>my.facades.MyFacade</servlet-name>
        <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>my.facades.UtilitiesApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>        
    </servlet>  
    <servlet-mapping>
        <servlet-name>my.facades.MyFacade</servlet-name>
        <url-pattern>/MyWS/*</url-pattern>
    </servlet-mapping>

Пожалуйста, помогите мне понять, что я могу делать неправильно.Дайте мне знать, нужна ли какая-либо другая информация.Спасибо!

...