Apache Axis 1.4 на Java 12

В настоящее время я пытаюсь перейти с проекта Java 8 на Java 12. (Надеюсь) последнее препятствие — это старый веб-сервис, который мы вынуждены использовать. Использование WebService «как есть» в Java 8 само по себе не является проблемой, оно работает уже много лет.

В wsdl указано:

‹!--WSDL, созданный Apache Axis версии: 1.4

Построен 22 апреля 2006 г. --›

Насколько я вижу, новые версии WSDL2JAVA больше не поддерживают этот тип сервиса (поскольку они полагаются на Axis 2):

Ошибка WSDLToJava: Rpc/закодированные wsdls не поддерживаются CXF

Чтобы эту службу можно было использовать (с Java 8 и 12), мне нужна следующая библиотека:

<!-- https://mvnrepository.com/artifact/javax.xml.rpc/javax.xml.rpc-api -->
<dependency>
    <groupId>javax.xml.rpc</groupId>
    <artifactId>javax.xml.rpc-api</artifactId>
    <version>1.1.2</version>
</dependency>

Вот где возникает проблема. Библиотека определяет частичный пакет javax.xml, который больше не разрешен, так как это системный путь Java. Любые предложения или обходные пути? Я что-то проглядел?

РЕДАКТИРОВАТЬ: ЖекаКозлов был прав в том, что ему пришлось переключиться на jakarta. Сейчас осталась еще ошибка, из-за Axis2, которая тоже требуется в проекте.

<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-kernel -->
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-kernel</artifactId>
    <version>1.7.9</version>
</dependency>

Простое добавление этого в новый проект Java 12 делает org.w3c.dom.* (например, Document) непригодным для использования.

РЕДАКТИРОВАТЬ 2: наконец-то у меня все заработало. Программа запущена, ошибок в коде не осталось. К сожалению, я не могу протестировать часть приложения Axis, потому что службы, к которым она подключается, можно использовать только в среде наших клиентов, поэтому это необходимо протестировать. И на оси 2, и на оси 2-adb мне пришлось исключить две библиотеки:

<exclusions>
    <exclusion>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-stax-api_1.0_spec</artifactId>
    </exclusion>
    <exclusion>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
    </exclusion>
</exclusions>

Они блокировали org.w3c.dom.* и javax.xml.stream.* соответственно.


person Krann Sock    schedule 22.11.2019    source источник


Ответы (1)


Поскольку Java EE был переименован в Jakarta EE, вам следует использовать новые артефакты:

<dependency>
    <groupId>jakarta.xml.rpc</groupId>
    <artifactId>jakarta.xml.rpc-api</artifactId>
    <version>1.1.4</version>
</dependency>

Новый артефакт больше не содержит разделенный пакет.

person ZhekaKozlov    schedule 26.11.2019
comment
К сожалению, структура пакета внутри этого jar-файла по-прежнему javax.xml... - person Krann Sock; 27.11.2019
comment
См. jaxenter.com/jakarta-ee-9-big-bang-163143. .html например (в разделе Большой взрыв) - person Krann Sock; 27.11.2019
comment
@KrannSock Это неправда. В банке только одна упаковка javax.xml.rpc. Он не содержит javax.xml. - person ZhekaKozlov; 27.11.2019
comment
Ах, кажется, путаница привела меня туда. Теперь это работает, спасибо. На самом деле единственные оставшиеся ошибки связаны с Axis2. Добавление зависимости mvnrepository.com/artifact/org.apache.axis2 /axis2-kernel/1.7.9 делает org.w3c.dom.* непригодным для использования. Новый проект только с этой зависимостью и простой импорт из этого пакета приводит к нарушению прав доступа. Нужно что-то делать с зависимостями компиляции... Я посмотрю на них. - person Krann Sock; 28.11.2019