У меня развернут портлет на Liferay, у которого есть вызов веб-службы и который использует библиотеки для внутренних осей.Когда вызывается веб-служба, я получаю следующую ошибку
Причина: java.util.ServiceConfigurationError: javax.xml.stream.XMLInputFactory: поставщик com.ctc.wstx.stax.WstxInputFactory не подтип
Я проверял различные другие сообщения
Я проанализировал строку ошибки, разбив ее на две части
- Причина: java.util.ServiceConfigurationError: javax.xml.stream.XMLInputFactory
- Поставщик com.ctc.wstx.stax.WstxInputFactory не подтип
И пришел к выводу, что ошибка вызвана несоответствием реализации Stax.
Итак, я проверил каталог lib и нашел следующие jar
Я вижу, что WstxInputFactory присутствует в woodstox-core-asl-4.1.4
ToПосмотрите, откуда эта банка добавляется I чвзломал build.gradle
buildscript {
repositories {
maven {
url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
}
}
dependencies {
classpath group: "com.liferay", name: "com.liferay.gradle.plugins.css.builder", version: "2.0.0"
}
}
apply plugin: "com.liferay.css.builder"
dependencies {
def withoutServletAPI = {
exclude group: 'javax.servlet', module: 'servlet-api'
}
compile group: "org.springframework", name: "spring-webmvc-portlet", version: "4.1.5.RELEASE"
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.6.0"
compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0"
compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"
compile group: "org.apache.axis", name:"axis", version: "1.4"
compile group: "org.apache.axis2", name:"axis2-adb", version: "1.6.3", withoutServletAPI
compile group: "org.apache.axis2", name:"axis2-transport-local", version: "1.6.3", withoutServletAPI
compile group: "org.apache.axis2", name:"axis2-transport-http", version: "1.6.3", withoutServletAPI
compile group: "com.google.code.gson", name:"gson", version: "2.3.1"
compile group: "jstl", name:"jstl", version: "1.2"
compile group: "taglibs", name:"standard", version: "1.1.2"
//compile group: "memberservice", name:"memberservice", version: "1.0.0"
compileOnly group: "com.liferay.portal", name: "com.liferay.util.java", version: "2.4.0"
//compile group: "com.sun.xml.ws", name: "jaxws-rt", version: "2.2.10"
testCompile group: 'junit', name: 'junit', version: '4.8.1'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.9.5'
compile files('../../modules/memberservice/build/libs/memberservice-1.0.0.jar')
}
war {
dependsOn buildCSS
exclude "**/*.scss"
filesMatching("**/.sass-cache/") {
it.path = it.path.replace(".sass-cache/", "")
}
includeEmptyDirs = false
}
Я проверил дерево зависимостей в gradle и обнаружил, что woodstox-core-asl-4.1.4 является транзитивной зависимостью для axis2-adb-1.6.3, которая находится в сборке.gradle.
Очевидно, что в jar есть конфликт, который вызывает вышеуказанную ошибку, но я не могу найти, какой jar вызывает его.Я подозреваю, что JDK 8 уже имеет XMLInputFactory, и в моей войне я вижу, что есть geronimo-stax-api, который снова является транзитивной зависимостью и может вызывать конфликт.
Я ищу то, что на самом деле вызывает проблему.
Примечание. Этот код создан не мной.Мой клиент дал этот код, который работал на более старой версии Liferay (6.2) на JBoss и был создан другим поставщиком, и мы переходим на более новую версию Liferay (DXP) на Tomcat.
PS: Я также проверил каталог lib в Tomcat, и там нет реализации stax