2013-03-28 58 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); 

希望它能帮助!

相关问题