Я пытаюсь портировать приложение JavaEE с GlassFish на TomEE.Однако у меня возникают проблемы, препятствующие внедрению EJB.
Вот мои зависимости pom для Jersey 2:
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jersey2.version>2.27</jersey2.version>
</properties>
<!-- Jersey -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>${jersey2.version}</version>
</dependency>
My Rest Controller является суперосновным:
@Path("/foo/")
@Stateless
public class FooService {
@EJB
Admin adminEjb;
@GET
@Path("bar")
public fooResponse loginRequest() {
adminEjb.hello();
return Response.status(Response.Status.OK).build();
}
}
Мой web.xml (я использую сервлет Jersey):
<servlet>
<servlet-name>ServletAdaptor</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.foo.ws</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdaptor</servlet-name>
<url-pattern>/resource/*</url-pattern>
</servlet-mapping>
Когда я развертываю это приложение в TomEE и поражаю конечную точку с помощью URL-шаблона / ресурса (используяorg.glassfish.jersey.servlet.ServletContainer):
curl -v 'http://localhost:8080/resource/foo/bar'
Я получаю поговорку 500: "java.lang.NullPointerException: adminEJB равно нулю"
Однако странная часть заключается в том, что я попал в конечную точку без ресурсной части пути (Пропуск org.glassfish.jersey.servlet.ServletContainer).EJB полностью заполнен и правильно введен.
curl -v 'http://localhost:8080/foo/bar'
Возвращает 200.
Итак, мой вопрос: почему Джерси предотвращает инъекцию EJB?Есть ли способ исправить это в TomEE?
Любая помощь будет принята с благодарностью.