[英]JAX-RPC, Spring web services, and UnsupportedOperationCallException
我有一個使用Spring嘗試使用的JAX-RPC Web服務。 這是我第一次使用Spring來使用Web服務,所以現在我只是想使其與JAX-RPC Web服務集成作為測試。
該Web服務中包含數十種操作,但是目前我只關心其中一項。 這是我在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錯誤,並且在獲取WSDL時Spring似乎沒有使用username / password屬性。 PortInterface
屬性(值為CompanyWebServiceInterfacePort
),那么我將得到另一個異常說明:
無法初始化JAX-RPC端口[{ http://www.company.com/wdsl } CompanyWebServiceInterfacePort]的服務; 嵌套異常是缺少WSDL數據,此操作不可用
換句話說,這是在告訴我缺少WSDL-我無法設置WSDL,因為Spring不會使用用戶名/密碼從服務器中獲取用戶名/密碼!
我不確定這是否有意義,但是本質上我不確定的是:
wsdlDocumentUrl
屬性? 如果是這樣,我有什么辦法可以告訴Spring哪個WSDL並解決身份驗證問題? 我最終通過在本地保存WSDL文件的副本解決了此問題,並且由於JaxRpcPortProxyFactoryBean希望wsdlDocumentUrl
屬性具有java.net.URL
,因此必須使用file:///c:/.../blah.wsdl
這樣的路徑進行設置。 file:///c:/.../blah.wsdl
。
這並不是真正想要的,我討厭必須將file:///
URI放入可能部署在服務器上的Spring上下文文件中,尤其是在不同的平台上-此類的行為方式似乎很奇怪。
我猜想大多數人不使用Spring也不使用JAX-RPC。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.