2013-09-27 2 views
6

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

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> 

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

+0

https://issues.apache.org/jira/browse/CXF-5483 это помогает? – alkis

ответ

0

Одна из проблем 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.