В качестве серверов приложений мы используем 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);
}