Не удалось загрузить класс org.eclipse.jetty.server.Connector при установке защищенного сервера мыла с использованием apache CXF. - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь опубликовать защищенный SOAP-сервер в качестве конечной точки потребления на верблюжьем маршруте JBoss Fuse.У меня есть следующая конечная точка и описание безопасности Jetty в моей конфигурации Blueprint:

...
<cxf:cxfEndpoint
        xmlns:crm="http://www.bank.com/CRM"
        id="crmOutboundService"
        address="https://localhost:9001/cxf/CRMOutbound"
        serviceName="crm:CRMOutboundRq"
        endpointName="crm:ASBOCRMOutPort"
        wsdlURL="model/ASBOCRMOut/CRMOutboundRq.wsdl"
        serviceClass="com.bank.SAXSourceService">
    <cxf:properties>
        <entry key="dataFormat" value="PAYLOAD"/>
    </cxf:properties>
</cxf:cxfEndpoint>

<httpj:engine-factory bus="cxf">
    <httpj:engine port="9001">
        <httpj:tlsServerParameters secureSocketProtocol="TLSv1">
            <sec:keyManagers keyPassword="password">
                <sec:keyStore type="JKS" password="password"
                file="/opt/esb/security/keystore.jks"/>
            </sec:keyManagers>
            <sec:trustManagers>
                <sec:keyStore type="JKS" password="password"
                              file="/opt/esb/security/truststore.jks"/>
            </sec:trustManagers>
            <sec:cipherSuitesFilter>
                <sec:include>.*_WITH_3DES_.*</sec:include>
                <sec:include>.*_WITH_DES_.*</sec:include>
                <sec:exclude>.*_WITH_NULL_.*</sec:exclude>
                <sec:exclude>.*_DH_anon_.*</sec:exclude>
            </sec:cipherSuitesFilter>
            <sec:clientAuthentication want="true" required="true"/>
        </httpj:tlsServerParameters>
    </httpj:engine>
</httpj:engine-factory>
...

Все как в руководстве отсюда: https://access.redhat.com/documentation/en-us/red_hat_jboss_fuse/6.2/pdf/apache_cxf_security_guide/Red_Hat_JBoss_Fuse-6.2-Apache_CXF_Security_Guide-en-US.pdf

У меня есть (среди прочих) следующие зависимости вpom.xml:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-blueprint</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cxf</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jetty</artifactId>
</dependency>    

Когда пакет приложений развертывается в JBoss Fuse, возникает следующее исключение:

org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to load class org.eclipse.jetty.server.Connector from recipe MapRecipe[name='#recipe-11850']"

Вопросы: почему возникает такая ошибка и что такоеправильный способ установить защищенный SOAP-сервер в JBoss Fuse?

1 Ответ

0 голосов
/ 25 января 2019

В итоге мы добавили следующую директиву в дескриптор Blueprint:

<bean id="server" class="org.eclipse.jetty.server.Server"/>

Ошибка исчезла, и приложение работает правильно, но мы на самом деле не понимаем, почему, потому что нет никакихссылки на новый боб.Мы пытаемся выяснить, запускает ли эта директива новый экземпляр сервера Jetty.

...