Spring を使用して消費しようとしている JAX-RPC Web サービスがあります。Spring を使用して Web サービスを使用するのはこれが初めてなので、今はテストとして JAX-RPC Web サービスと統合しようとしています。
この Web サービスには数十の操作が含まれていますが、今のところ 1 つだけに関心があります。Spring/クライアント側で作成したインターフェースは次のとおりです。
public interface WSClient {
public boolean userExists(int userid);
}
public interface WSService {
//this method matches the method signature of the Web Service
public com.company.data.User getUser(int userid);
}
そして、ここに私のapplicationContext.xmlがあります:
<bean id="WSClient" class="com.company.ws.test.WSClientImpl">
<property name="service" ref="myWebService"></property>
</bean>
<bean id="myWebService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
<property name="serviceInterface" value="com.company.ws.test.WSService"/>
<property name="endpointAddress" value="http://1.2.3.4/web-service/data"/>
<property name="namespaceUri" value="http://www.company.com/wdsl"/>
<property name="serviceName" value="CompanyWebService"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
<property name="maintainSession" value="true"/>
</bean>
のこの構成を使用しJaxRpcPortProxyFactoryBean
てサービスを呼び出すと、次の例外が返されます。
org.springframework.remoting.RemoteProxyFailureException: 無効な JAX-RPC 呼び出し構成。ネストされた例外は操作スタイルです: "rpc" はサポートされていません
私は、RPC とドキュメント スタイルの Web サービスの違いを完全には理解していません。ただし、この Web サービスは RPC スタイルを使用していると思われるため、この例外は混乱を招きます。
第二に、どのプロパティを設定する必要があるかについて混乱していますJaxRpcPortProxyFactoryBean
:
- プロパティを設定すると
wsdlDocumentUrl
、この Web サービスが HTTP 基本認証の背後にあるため、HTTP 401 エラーが発生し、Spring は WSDL を取得するときにユーザー名/パスワード プロパティを使用しないようです。 PortInterface
プロパティ (の値)を指定するとCompanyWebServiceInterfacePort
、次のような別の例外が発生します。JAX-RPC ポート [{ http://www.company.com/wdsl }CompanyWebServiceInterfacePort] のサービスを初期化できませんでした。ネストされた例外は WSDL データがありません。この操作は使用できません
つまり、WSDL が見つからないということです。Spring はユーザー名/パスワードを使用してサーバーから取得しないため、設定できません。
これが意味をなすかどうかはわかりませんが、本質的に確信が持てないのは次のとおりです。
- JAX-RPC サービスの場合、PortInterface プロパティを設定する必要がありますか? これは私が進むべき道ですか?
- 同様に、Spring は
wsdlDocumentUrl
プロパティを設定する必要がありますか? もしそうなら、どの WSDL を Spring に伝え、認証の問題を回避する方法はありますか?