Выполнение вызовов JAX-RS 2 из openejb?

В качестве серверов приложений мы используем Websphere 9 и openejb 4.7.2. Websphere как размещает службы REST, так и вызывает службы REST.

Теперь мы хотели бы вызывать и размещать сервисы в openejb. Начнем с вызова REST-сервисов.

Интересно, какую банку мы должны включить в наш путь к классам, чтобы мы могли загрузить javax.ws.rs.client.Client?

Тот же класс отлично работает в веб-сфере (без каких-либо модификаций), но это трассировка стека, которую мы получаем от openejb при запуске:

java.lang.NoClassDefFoundError:
Could not fully load class: my.class.RESTClientBean due to:javax.ws.rs.client.Client in classLoader:

Упрощенный пример кода:

EJB и JaxRS — это две разные спецификации. OpenEJB реализует спецификацию EJB. Чтобы сделать вызов службы RESTFul с использованием API-интерфейсов JaxRS, вам потребуется библиотека, реализующая спецификацию JaxRS. Джерси — одна из таких библиотек. Взгляните сюда -

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
...
private static void start() {
        Client client = ClientBuilder.newClient();
        Response response = client.target(URI + "abc?code=41").request().get();
        int status = response.getStatus();
        System.out.println("Status code: " + status);
    }

person user1329339    schedule 06.03.2018    source источник
comment
Привет, ну я не знаю, какие банки я ищу. И спецификация, и реализация. Не могли бы вы сказать мне, где я могу их найти? Не могу найти их в каталоге библиотеки, поставляемой с openejb.   -  person Sashi    schedule 06.03.2018
comment
Взгляните на это — jersey.github.io/download.html   -  person user1329339    schedule 06.03.2018
comment
Да, этот шов должен работать! Не могли бы вы добавить его как ответ на этот вопрос, чтобы я мог отметить его как правильный? Большое спасибо!   -  person Sashi    schedule 06.03.2018
comment
org.apache.openejb.core.TempClassLoader@ba08782 по адресу org.apache.xbean.finder.ClassFinder.(ClassFinder.java:136) по адресу org.apache.xbean.finder.ClassFinder.(ClassFinder.java:127) по адресу org. apache.openejb.config.rules.CheckCallbacks.validate(CheckCallbacks.java:85) в org.apache.openejb.config.rules.ValidationBase.validate(ValidationBase.java:50) в org.apache.openejb.config.AppValidator. validate(AppValidator.java:101) в org.apache.openejb.config.ValidateModules.deploy(ValidateModules.java:38) в org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:403) в org. .apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:971) в org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:832) в org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory .java:546) в org.apache.openejb.config.Configuration Factory.getOpenEjbConfiguration(ConfigurationFactory.java:591) в org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:459) в org.apache.openejb.assembler.classic.Assembler.build(Assembler.java: 438) в org.apache.openejb.OpenEJB$Instance.(OpenEJB.java:150) в org.apache.openejb.OpenEJB$Instance.(OpenEJB.java:67) в org.apache.openejb.OpenEJB.init(OpenEJB .java:298) в org.apache.openejb.OpenEJB.init(OpenEJB.java:278) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) в java.lang.reflect.Method.invoke(Method.java:508) в org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36) в org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:98) в org.apache .openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:62) в org.apache.openejb.core.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:46) в javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:695) ) в javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:324) в javax.naming.InitialContext.init(InitialContext.java:255) в javax.naming.InitialContext.(InitialContext.java:227) в my.calling. Util.init(Util.java:199)   -  person user1329339    schedule 06.03.2018


Ответы (1)


Скачать футболку

Существуют и другие реализации JaxRS, которые вы могли бы рассмотреть, такие как Resteasy, Restlet и т. д.,

Вы включили jar-файлы для JaxRS API в свой путь к классам? Кроме того, JaxRS - это просто спецификация, вам также понадобится библиотека реализации, такая как Jersey или RestEasy, в вашем пути к классам.

person Sashi    schedule 06.03.2018