クラスパスに問題があります。Web サービスである Web アプリケーションがあります。JaxB と CXF を使用します。Web サービスには、Web サービス クライアントである別の JAR の依存関係があります。wsdl2java プラグインを使用して、クライアント コードとサービス コードの両方が生成されるようになりました。問題は次のようになります。
Parent WebService WAR
--PackageA
--ClassB
Dependency Jar
--PackageA
--ClassB
したがって、両方とも同じパッケージと同じクラス名を持ち、これらはプラグインによって生成されるため、パッケージの 1 つをリファクタリングして同一にならないようにすることが難しくなります。WebService はクライアントを呼び出し、クライアント コードでは、Web サービス クライアント Jar からの classB ではなく、Web サービスからの親 classB を初期化します。この ClassB の唯一の問題は、differnet パラメータを受け取る 1 つのメソッドがあることです。あるクラス B ではそれが必要ですDate
が、別の classB ではそれが必要XmlGregorianCalendar
です。そのため、クライアントを呼び出しているときに、nosuchmethodexception が発生します。
これが私がこれまでに試したことです。
1: クライアント jar で、ClassB を初期化するために完全なパッケージとクラス名を指定しようとしました
2: クライアント jar で、Spring Bean を使用してクラスをワイヤリングしようとしましたが、驚くべきことに、クライアントではなく webService からクラスをワイヤリングしています。
3: Web サービス ClassB で、正しいパラメーターを取る同じメソッドを追加してみました。これは部分的に機能しますが、別の例外が発生し、良くありません。
あなたの助けを楽しみにしています。ありがとう!
次のようにuser2880879の提案に従って wsdl からクラスを生成するときに、追加の引数を wsdl2java プラグインに渡すことで問題を解決しました。
<extraarg>-p</extraarg>
<extraarg>http://www.example.com=mypackagename</extraarg>