2013-03-28 2 views
1

我已經在Eclipse和RAD 7.0中使用Apache CXF,IBM Jax-WS和Axis生成了存根。如何將身份驗證標題添加到WebService存根?

在所有上述3個方案,這給了我下面的異常

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record 

搜索我的結論是,我要認證信息添加到由客戶端存根創建SOAP頭後。

我試圖回答這個鏈接

How do you add a Soap Header defined in a wsdl to a web service client in CXF?

上,但未能成功。我是SOAP和WebServices的新手

因此,如果任何人已經在它的工作,請幫助。

+0

請提供您的wsdl。 – willome 2013-03-29 15:44:07

回答

1

前幾天我有這個問題,這對我來說是一個頭痛的問題。在生成存根時,必須將標誌-XadditionalHeaders添加到wsimport命令。

"C:\Program Files\Java\jdk1.X.X_XX\bin\wsimport.exe" -p com.company.package -keep -XadditionalHeaders -d folder1 http://mywsdllocation.com/doc.wsdl 

其中: -p:將包含生成的類 -keep包:保持.java文件(否則tou'll只能獲得.class文件) -XadditionalHeaders:類將創建認證 -d:將放置生成的類的文件夾。

之後,您只需將生成的java文件複製到您選擇的包(本例中爲com.company.package)下的項目中。然後,你必須在創建AuthenticationInfo對象和存根方法的調用插入它,像這樣:

WSService service = new WSService(); 
WSPortTypePortType port = service.WSPortTypeSoap(); 
AuthenticationInfo auth = new AuthenticationInfo(); 
auth.setUserName(yourUsername); 
auth.setPassword(yourPassword); 
port.method(param1,param2,auth); 

希望它能幫助!

相關問題