因此,我正在連接到使用Axis的RPC編碼Web服務。不幸的是,從Axis轉換不是一種選擇,我的應用程序目前正在使用Spring。Spring從RPC編碼的Webservice客戶端獲取IP地址
我的Spring配置目前看起來類似於:
<bean id="appWebServiceClient"
class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
<property name="serviceInterface"
value="app.test.stubs.external.Gateway_PortType"/>
<property name="wsdlDocumentUrl" value="${app.url}"/>
<property name="namespaceUri" value="${app.namespace}"/>
<property name="serviceName" value="${app.servicename}"/>
<property name="portName" value="${app.portname}"/>
<property name="lookupServiceOnStartup" value="false"/>
<property name="customPropertyMap">
<map>
<entry key="axis.connection.timeout">
<value type="java.lang.Integer">${app.timeout}</value>
</entry>
</map>
</property>
我再注入上述豆成具有Gateway_PortType
(由Axistools產生存根接口)的instansiation處理類,然後我用實際調用我嘗試連接的服務器上的方法。
我的問題是我需要自動獲取我發送到的服務器的IP,即instaniated Gateway_PortType
。任何想法如何做到這一點?我曾嘗試將注入的豆投入到JaxRpcPortProxyFactoryBean
/org.apache.axis.client.Stub
以嘗試獲取IP或主機名,但無濟於事。如果我試圖得到instansiated對象的.getClass().getName()
,我所得到的是$Proxy44
或類似的東西。任何幫助,將不勝感激
感謝您的答覆佩斯,根據您的建議,我設法將代理類轉換爲javax.rmi.Remote,但是我在檢索IP地址或主機名方面沒有取得進展。基本上我的代碼如下所示: public String getIPAddress(Object stub) { \t java.rmi.Remote remote =(Remote)stub; \t String hostIpAddress =((org.apache.axis.client.Stub)remote)._ getService()。getWSDLDocumentLocation()。getHost(); } 根據我對Axis的經驗,以上是獲取主機名或Ip的正確方法,但仍然得到類轉換異常。 – user1065956
您是否嘗試將存根轉換爲(javax.xml.rpc.Stub)? – Pace