I ребята, Я использую TomEE 1.6.0 (JAX-RS) с настраиваемым Применением:TomEE встроенных и развертывание приложений на заказ JAX-RS
@ApplicationPath("/rest")
public class Whatever extends Application {...}
Я делаю это для того, чтобы настроить базу путь для моего REST сервисов и добавить пользовательский поставщик для каждого концов этого приложения:
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<pojo-deployment class-name="Whatever">
<properties>
cxf.jaxrs.providers = WhateverProvider
</properties>
</pojo-deployment>
</openejb-jar>
У меня есть образец JAX-RS конечной точка определяются следующим образом:
@Path("/whatever")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public class WhateverEndpoint {...}
Все работает нормально при развертывании в Tomice jax-rs (tomee-maven-plugin: начало). я могу назвать свои услуги по /отдыху/все
Проблема заключается в том, когда я хочу модульное тестирование этого сервиса с TomEE Embedded, WhateverEndpoint не развертывается ...
Конфигурации я использую для установка тестов (@BeforeClass) заключается в следующем:
Properties properties = new Properties();
properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
context = EJBContainer.createEJBContainer(properties).getContext();
я могу проверить DAO и так далее, но не Endpoints ... Когда я добавляю @ javax.ejb * аннотацию, как это:.
@Singleton
@Path("/whatever")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public class WhateverEndpoint {...}
У меня есть что-то лучше, в журналах:
INFO - Initializing network services
INFO - REST Application: http://127.0.0.1:4204/web -> org.apache.openejb.server.rest.InternalApplication
INFO - Service URI: http://127.0.0.1:4204/web/whatever -> EJB Whatever
INFO - GET http://127.0.0.1:4204/web/whatever/a -> A a(HttpServletRequest)
INFO - ** Bound Services **
INFO - NAME IP PORT
INFO - httpejbd 127.0.0.1 4204
INFO - admin 127.0.0.1 4200
INFO - ejbd 127.0.0.1 4201
INFO - ejbds 127.0.0.1 4203
Что я должен сделать, чтобы сделать это правильно работает с моим обычаем JAX-RS-приложение Path и поставщика, так же, как TomEE JAX-RS делать и не добавлять аннотации ejb? Должен ли я определять дополнительные свойства и какой при создании моего EJBC-контентера? Я вижу некоторые в приложениях выборки:
- https://github.com/apache/tomee/blob/trunk/examples/rest-on-ejb
- https://github.com/apache/tomee/blob/trunk/examples/rest-example
Но никто из них не работают.
Вот мой pom.xml:
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0-5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>tomee-embedded</artifactId>
<version>${tomee.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-cxf-rs</artifactId>
<version>${openejb.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>tomee-jaxrs</artifactId>
<version>${tomee.version}</version>
<scope>test</scope>
</dependency>
Переопределение openejb.cxf.jax-rs.providers, похоже, не работает – avianey