2012-01-19 5 views
0

Я только начал изучать CXF. Я сделал проект архетипа maven через затмение. Когда я запускаю maven build и разворачиваю в JBoss свой рабочий режим.Использование CXF с eclipse

@WebService 
public interface HelloWorld { 
    String sayHi(String text); 
} 

@WebService(endpointInterface = "foo.HelloWorld") 

    public class HelloWorldImpl implements HelloWorld { 

     public String sayHi(String text) { 

      return new "Hello"+text; 
     } 
    } 

Затем я создал класс Employee с именем и зарплатой в качестве поля с геттером и сеттерами. И я просто изменил возвращаемый тип метода HelloWorld sayHi для Employee, и я вернул объект Employee из метода HelloWorldimpl sayHi.

Тогда и работает нормально (я имею в виду, я проверил его с помощью SOAP UI, после изменения кода я получаю XML-Employee)

Где это преобразование кода, написанного.

Кроме того, я не нашел cxf.xml и CxF-servlet.xml в коде: (Где эти XML хранятся в коде)

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

Пожалуйста, помогите мне понять это.

@ ŁukaszBachman Я получил файлы XML в файле CXF * .jar.

Что делать, чтобы сделать расширение в этом проекте. Нужно ли добавлять компоненты в xml-файлы?

+0

Вы не должны изменять какие-либо части библиотеки CXF, если только вы не находитесь в команде разработчиков, вкладчике или абсолютно не знаете, что делаете;) Однако вы можете расширить некоторые компоненты благодаря Spring и IoC. Например: если у вас есть интерфейс X, созданный CXF и реализованный в XImpl1, вы всегда можете определить свою собственную реализацию XImpl2 и связать ее с CXF, если создатели этой библиотеки предполагали, что она будет расширена. Как правило, не расширяйте части API, которые не предназначены для расширения. Хорошо разработанные API-интерфейсы должны предоставить вам достаточную гибкость, чтобы использовать его по своему усмотрению. –

ответ

0

Вы, очевидно, используете CXF с Spring для импорта ресурсов, определенных на CLASSPATH. Это означает, что Spring попытается импортировать любые виды бобов, определенные в двух файлах (cxf.xml и cxf-servlet.xml).

Classloader загрузит все библиотеки, определенные для вашего веб-приложения (/ WEB-INF/lib directory), когда контейнер сервлета запускает его. Затем он запустит Spring framework (определенный в /WEB-INF/web.xml). Когда весна загружена, она попытается создать все Бобы, определенные для вашего webapp, поэтому он проанализирует ваш собственный контекст приложения, чтобы узнать, что ему также необходимо импортировать некоторый ресурс, расположенный в META-INF/cxf/cxf.xml на пути к классам. Поэтому он будет искать его еще раз во всех библиотеках, расположенных в /WEB-INF/lib.

Вот почему вы не видите эти два файла в своем проекте. Они предоставляются библиотекой CXF (cxf.jar). Вы можете проверить это самостоятельно, просто откройте cxf.jar как обычный ZIP-файл и перейдите к /META-INF.

Заключительное замечание, эти два файла предоставляются каркасом CXF, поэтому вам, вероятно, не нужно его изменять. Вы можете просто взглянуть на него, если это поможет вам понять внутренности CXF.

Смежные вопросы