2010-09-30 27 views
2

我有用JAX-WS開發的Web服務。我已經通過在Tomcat中配置的BASIC認證保證了Web服務的安全。從安全服務中檢索WSDL文件

當我嘗試使用Java客戶端訪問Web服務,我首先需要創建的端口,然後指定的憑據,如下所示:

CustomerServiceClient customerServiceClient = new CustomerServiceBottomUpService(); //1 
CustomerService customer = customerServiceClient.getCustomerServicePort(); //2 

Map<String, Object> context = ((BindingProvider) customer).getRequestContext(); //3 
context.put(BindingProvider.USERNAME_PROPERTY, "kermit"); //4 
context.put(BindingProvider.PASSWORD_PROPERTY, "thefrog"); //5 

我的問題是,行後1,我得到一個授權錯誤(HTTP 401),因爲我顯然還沒有向服務器提供憑證。

我從服務器WSDL創建客戶端工件,因此創建服務時出現身份驗證問題,並且不希望我的客戶端在本地存儲WSDL,因爲它只是爲他們煩人。我怎樣才能解決這個問題?

回答

2

BindingProvider.USERNAME_PROPERTY,BindingProvider.PASSWORD_PROPERTY主要用於服務請求。當你實例化服務,它獲取WSDL和服務器返回401你可以嘗試以下解決方案中的任何一個:在您的客戶端應用程序

  • 使用java.net.Authenticator類。
  • 使用目錄提供對WSDL的本地訪問。
  • 配置web.xml以允許無需驗證的GET請求。

參考java.boot.by

+0

感謝您的答覆。不是認證者或目錄事物的忠實粉絲,並且始終使用GET來訪問服務。它可以被修改爲僅接受POST HTTP請求嗎? – 2010-09-30 19:44:35