#java #web-services #osgi #cxf #aem
Вопрос:
Я работаю над проектом AEM maven, в котором мне нужно использовать веб-сервис. Я использую Eclipse для написания кода и для его реализации с использованием библиотеки CXF. Код отлично работает в образце проекта, но как только я развертываю пакет на CRXD в AEM, а затем пытаюсь использовать его, он выдает следующую ошибку в самой первой строке при создании объекта службы.
javax.xml.ws.spi.FactoryFinder$Ошибка конфигурации: Поставщик org.apache.cxf.jaxws.spi.ProviderImpl не найден
Это код, который я использую.
ServiceXML serviceXml = new ServiceXML(wsdlURL, SERVICE_NAME);
IServiceXML ixmlPort = serviceXml.getSAApiTPSIntegrationsXML();
((BindingProvider) ixmlPort).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "username");
((BindingProvider) ixmlPort).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "pssw0rd");
final String username = "username";
final String password = "pssw0rd";
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
username,
password.toCharArray());
}
});
metaData = ixmlPort.getMetadata("username", "CA");
Это правила приличия, которые я включил в свой пом
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>wssx-impl</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>3.3.2</version>
</dependency>
Я думаю, что, вероятно, он не может найти эту библиотеку CXF в среде AEM. Я много ищу его решение, и единственное, что удалось найти, — это то, что в некоторых сценариях люди предлагают использовать для него пакеты OSGI. Но мне интересно, зачем нам нужен пакет, когда мы включили зависимости в pom, и они должны быть частью пакета,
Комментарии:
1. Там нет никого, кто мог бы помочь 🙁
2. Я помню, что у меня было много проблем при использовании cxf в AEM, мне также пришлось использовать следующую зависимость: <зависимость> <зависимость><идентификатор группы>org.apache.cxf<Идентификатор группы></Идентификатор группы> </Идентификатор группы><Идентификатор группы> < Идентификатор группы > < идентификатор группы > < привязка данных cxf-rt-xmlbeans<идентификатор></Идентификатор> </идентификатор><версия>${cxf.версия}<версия></версия> </версия>< / зависимость>