我們正在努力配置我們的Web應用程序,以便能夠通過Spring WS與Web服務進行連接。我們試圖使用客戶端Spring-WS文檔中的示例,但最終得到了一個WebServiceTransportException。 XML配置看起來是這樣的:WebServiceTransportException:未授權[401]在Spring-WS
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory"/>
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
<property name="credentials">
<bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
<constructor-arg value="john"/>
<constructor-arg value="secret"/>
</bean>
</property>
</bean>
</property>
</bean>
我們已經能夠以編程方式配置的應用,但是這種配置是不可能的「轉移」到Spring的XML配置,因爲一些制定者並沒有使用格式春天的期望。 (HttpState.setCredentials(...)需要兩個參數)。該配置從公司的其他Spring-WS客戶端代碼中解脫出來。
這是工作的配置:
public List<String> getAll() {
List<String> carTypes = new ArrayList<String>();
try {
Source source = new ResourceSource(request);
JDOMResult result = new JDOMResult();
SaajSoapMessageFactory soapMessageFactory = new SaajSoapMessageFactory(MessageFactory.newInstance());
WebServiceTemplate template = new WebServiceTemplate(soapMessageFactory);
HttpClientParams clientParams = new HttpClientParams();
clientParams.setSoTimeout(60000);
clientParams.setConnectionManagerTimeout(60000);
clientParams.setAuthenticationPreemptive(true);
HttpClient client = new HttpClient(clientParams);
client.getState().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("username", "password"));
CommonsHttpMessageSender messageSender = new CommonsHttpMessageSender(client);
template.setMessageSender(messageSender);
template.sendSourceAndReceiveToResult(SERVICE_URI,
source, result);
// Handle the XML
} catch (IOException e) {
throw new RuntimeException(e);
} catch (SOAPException e) {
throw new RuntimeException(e);
}
return carTypes;
}
有誰知道如何解決我的問題?我看到的每個教程都列出了第一個配置。看來,當我設置messageSender,和對象的憑據,他們只是忽略...
當如上述規定,由春季出現的順序區分構造函數的參數。表示法只能在通過構造函數設置屬性和通過訪問器設置屬性之間進行切換。恐怕,這不會改變任何事情。 –
2013-05-03 14:27:23