我有一些类路径问题。我有一个 Web 应用程序,它是一个 Web 服务。它使用 JaxB 和 CXF。Web 服务依赖于另一个 JAR,它是 Web 服务客户端。现在客户端和服务代码都是使用 wsdl2java 插件生成的。问题看起来像这样:
Parent WebService WAR
--PackageA
--ClassB
Dependency Jar
--PackageA
--ClassB
因此它们都具有相同的包和相同的类名,并且由于它们是由插件生成的,因此很难重构其中一个包以使它们不相同。WebService 调用客户端,并在客户端代码中从 Web 服务初始化父类 B,而不是从 Web 服务客户端 Jar 初始化类 B。这个 ClassB 中的唯一问题是他们有一个方法采用不同的参数,在一个 B 类中它采用,Date
而在另一个 classB 中它采用XmlGregorianCalendar
. 因此,在调用客户端时,我没有收到任何方法异常。
这是我到目前为止没有运气的尝试:
1:在客户端 jar 中,我尝试提供完整的包和类名来初始化 ClassB
2:在客户端 jar 中,我尝试使用 Spring bean 连接类,令人惊讶的是,它仍然是从 webService 而不是客户端连接类
3:在 Web 服务 ClassB 中,我尝试添加采用正确参数的相同方法。这部分有效,但会导致另一个不好的异常。
期待您的帮助。谢谢!
通过将额外的参数传递给 wsdl2java 插件解决了这个问题,同时根据user2880879的建议从 wsdl 生成类,如下所示:
<extraarg>-p</extraarg>
<extraarg>http://www.example.com=mypackagename</extraarg>