TargetNamespace в простом фронте CXF

1

Я использую простой интерфейс CXF, который использует XML-конфиги только вместо аннотаций для создания мыльных веб-сервисов.

Теперь я создал службу:

<simple:server id="locationSettingService"
        serviceClass="com.my.own.webservice"
        address="/LocationSettingWebService">
        <simple:serviceBean>
            <bean
                class="com.my.own.webserviceImpl">

            </bean>
        </simple:serviceBean>
        <simple:inInterceptors>
            <ref bean="addressingHandler" />
            <ref bean="authHandler" />
        </simple:inInterceptors>
        <simple:dataBinding>
            <bean class="org.apache.cxf.aegis.databinding.AegisDatabinding" />
        </simple:dataBinding>
    </simple:server>

После его развертывания wsdl:

<wsdl:definitions name="LocationSettingWebService" ... targetNamespace="http://own.my.com/">

Он использует targetNamespace http://own.my.com/

Моя проблема заключается в том, что я не хочу перемотки в конце пространства имен выше. Мне нужно только http://own.my.com как мое targetNamespace. Поэтому я хочу изменить пространство имен с помощью простого интерфейса. Любая помощь?

Обновление: после долгого поиска и поискать сотни способов обхода. Я понял, проблема, технология генерации пространства имен CXF "/" впереди XFire.

Перейдите на эту страницу. Ищите совместимость с XFire, но я пробовал много вещей, но не повезло избежать этого '/'. Пожалуйста, помогите людям, я даже открыл щедрость от моей маленькой репутации SO.

Теги:
soap
web-services
cxf

1 ответ

1
Лучший ответ

Наконец, мне удалось это сделать, благодаря списку рассылки apache и очень щедрым людям.

Все, что мне нужно, это добавить FactoryBean с самой первой конфигурацией, являющейся XFireCompatibilityServiceConfiguration потому что это первое правило, которое возвращает XFireCompatibilityServiceConfiguration конфигурации.

  <simple:server id="locationSettingService"
        serviceClass="com.my.own.webservice"
        address="/LocationSettingWebService">
<simple:serviceFactory>
            <ref bean="aegisCompatibilityFactoryBean"/>
        </simple:serviceFactory>
        <simple:serviceBean>
            <bean
                class="com.my.own.webserviceImpl">

            </bean>
        </simple:serviceBean>
        <simple:inInterceptors>
            <ref bean="addressingHandler" />
            <ref bean="authHandler" />
        </simple:inInterceptors>
        <simple:dataBinding>
            <bean class="org.apache.cxf.aegis.databinding.AegisDatabinding" />
        </simple:dataBinding>
    </simple:server>

и этот фасоль сам

<bean id="aegisCompatibilityFactoryBean"
        class="org.apache.cxf.service.factory.ReflectionServiceFactoryBean" scope="prototype">
        <property name="serviceConfigurations">
            <list>
                <bean
                    class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration">
                </bean>
                <bean class="org.apache.cxf.service.factory.DefaultServiceConfiguration" />

            </list>
        </property>
    </bean>

И убедитесь, что область этого компонента является прототипом, если вы используете его для нескольких веб-сервисов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню