Java 如何将身份验证头添加到WebService存根?

Java 如何将身份验证头添加到WebService存根?,java,web-services,authentication,soap,cxf,Java,Web Services,Authentication,Soap,Cxf,我已经使用ApacheCXF、IBMJAX WS和Axis以及Eclipse和RAD7.0生成了存根 在上述所有3种情况下,它给了我以下例外 Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record 搜索之后,我得出结论,我必须将身份验证信息添加到由客户端存根创建的Soap头中 我在这个链接上尝试了

我已经使用ApacheCXF、IBMJAX WS和Axis以及Eclipse和RAD7.0生成了存根

在上述所有3种情况下,它给了我以下例外

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record
搜索之后,我得出结论,我必须将身份验证信息添加到由客户端存根创建的Soap头中

我在这个链接上尝试了答案

但是没有成功。我是SOAP和Web服务的新手


因此,如果有人对此进行了研究,请提供帮助。

几天前我遇到了这个问题,这让我很头疼。在生成存根时,必须向wsimport命令添加标记-xaadditionalheaders

"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文件(否则将只获取.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);

希望有帮助

请提供您的wsdl。我使用了-XadditionalHeaders标志,但是所有生成的类在内容上都与之前生成的没有参数的类相同。