Как развернуть веб-сервис Apache CXF на Glassfish

У меня есть клиент веб-службы, созданный и построенный с использованием Apache CXF. Затем у меня есть приложение JAX-RS Jersey, в котором я хочу вызывать методы из этого веб-сервиса. Когда я пытаюсь развернуть этот простой проект на сервере Glassfish 4.0, я получаю следующее исключение:

Exception while deploying the app [pelijee] :
The lifecycle method [finalizeConfig] must not throw a checked exception.
Related annotation information: annotation [@javax.annotation.PostConstruct()] on annotated element [public void org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.finalizeConfig() throws java.security.GeneralSecurityException,java.io.IOException] of type [METHOD]. Please see server.log for more details.

Команда развернуть не удалось.

Единственная зависимость CXF, которую я имею в этом проекте:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-bundle-jaxrs</artifactId>
        <version>2.7.6</version>
        <type>jar</type>
        <scope>runtime</scope>
    </dependency>

Есть ли другая библиотека CXF, совместимая с JSR 250? Спасибо

1 ответ

Одна из проблем Glassfish заключается в том, что полный профиль сервера поставляется в комплекте с Metro для веб-сервисов JAX-WS и Jersey для сервисов отдыха JAX-RS. Настроить загрузчик классов рекомендуется с помощью файла sun-web.xml, включенного в папку WEB-INF вашей WAR. Он должен включать следующее содержание:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC 
    '-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN' 
    'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'>
    <sun-web-app>
        <class-loader delegate="false"/>
    </sun-web-app>

В прошлом я обнаружил, что иногда у меня все еще есть проблемы с развертыванием; поэтому я фактически полностью удалил функции Metro и Jersey из профиля сервера Glassfish. Вот еще немного информации о развертывании.

http://cxf.apache.org/docs/application-server-specific-configuration-guide.html

Еще одна вещь, которую я заметил, это то, что вы разместили в журнале сообщение, которое включало транспорт Jetty. Это означает, что вы используете HTTP-сервер Jetty и HTTP-сервер Glassfish. Я бы предложил просто использовать Glassfish в качестве веб-сервера и использовать вместо этого транспортный сервлет CXF.

Другие вопросы по тегам