Java 12上的Apache Axis 1.4

5

我目前正在尝试将一个Java 8项目迁移到Java 12。 (希望) 最后的障碍是我们被迫使用的旧Web服务。在Java 8中使用Web服务“as is”本身并不是问题,它已经工作了多年。

wsdl声明:

<!--WSDL由Apache Axis版本创建:1.4

Built on Apr 22, 2006 -->

据我所知,新版本的WSDL2JAVA不再支持此类服务(因为它们依赖于Axis 2):

WSDLToJava错误:CXF不支持Rpc/encoded wsdls

为了使这个服务能够在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系统路径,因此不再允许使用。有什么建议或解决方法吗?我有遗漏什么吗?
编辑:ZhekaKozlov关于必须切换到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部分,因为它连接的服务只能从我们客户的环境中使用,因此必须进行测试。 在axis2和axis2-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.*。

1个回答

2

自从Java EE更名为Jakarta EE,您应该使用新的构件:

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

新的构件不再包含拆分包。

很遗憾,这个jar文件内部的包结构仍然是javax.xml... - Krann Sock
请参考 https://jaxenter.com/jakarta-ee-9-big-bang-163143.html 中的示例(在“宇宙大爆炸”下面)。 - Krann Sock
1
@KrannSock 这不是真的。该jar包只有一个名为javax.xml.rpc的包,它不包含javax.xml - ZhekaKozlov
啊,看来我有点困惑了。现在它确实可以工作了,谢谢。剩下的唯一错误实际上是由于Axis2引起的。添加依赖项https://mvnrepository.com/artifact/org.apache.axis2/axis2-kernel/1.7.9会使_org.w3c.dom.*_无法使用。一个只有这个依赖项和从这个包中简单导入的新项目会抛出访问冲突。可能与编译依赖项有关...我会研究一下的。 - Krann Sock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接