この WSDL を持つ KashFlow 用の SOAP クライアントを作成しようとしています。
https://securedwebapp.com/api/service.asmx
これは soapenc を使用するため、JAXB (および wsimport) を希望どおりに使用できず、JAX-RPC を使用する必要があります。wscompile と Eclipse Apache Axis プラグインを使用して Java クラスを作成することができました。
Spring と JaxRpcPortProxyFactoryBean を使用しています
<bean id="kashflowWebService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
<property name="serviceInterface" value="kashflow.axisapi.KashFlowAPI"/>
<property name="wsdlDocumentUrl" value="https://securedwebapp.com/api/service.asmx?WSDL"/>
<property name="namespaceUri" value="KashFlow"/>
<property name="serviceName" value="KashFlowAPI"/>
<property name="portName" value="KashFlowAPISoap"/>
</bean>
これは、サービスとポートを見つけることです。ユーザー名とパスワードのみを必要とする単純な操作である GetCurrencies 操作の要求があります。しかし、これは次のエラーを返します。
Caused by: port: {KashFlow}KashFlowAPISoap does not contain operation: getCurrencies
操作はそこにありますが、「GetCurrencies」と呼ばれます。生成されたクラスでは、埋め込まれた文字列リテラルはすべて大文字で始まっているように見えますが、なぜエラーは小文字で始まる操作に言及しているのでしょうか? WSDL が Java メソッドの命名規則に一致することを期待することと何か関係がありますか?
私が理解しているように、操作では大文字と小文字が区別され、Java で使用するために WSDL を作成する場合は、操作を小文字で開始しますが、サービスは .NET 用に作成され、C#、PHP などのサンプルを提供していると思います。しかし、Java にはありません。
生成されたコードの 2 つの異なるセット (wscompile と Axis wsdl2java) を試しましたが、Spring JAX-RPC を他の方法に変更して、それが役立つかどうかを確認します。
提供した WSDL で定義されている操作の適切な名前を使用するにはどうすればよいですか?