Java Can';将ServiceClient转换为WSBindingProvider

Java Can';将ServiceClient转换为WSBindingProvider,java,Java,所以我有了这个web服务(基于axis2),它应该充当其他web服务的客户机。但当尝试将我的servicePort(docManClient)强制转换为WSBindingProvider时,我得到ClassCastException错误: 无法将$Proxy283强制转换为com.sun.xml.internal.ws.developer.WSBindingProvider 让我困惑的是,当从简单java应用程序执行时,该代码可以正常工作,但当从web服务执行时,它失败了。我还注意到,当从简单j

所以我有了这个web服务(基于axis2),它应该充当其他web服务的客户机。但当尝试将我的servicePort(docManClient)强制转换为WSBindingProvider时,我得到ClassCastException错误:

无法将$Proxy283强制转换为com.sun.xml.internal.ws.developer.WSBindingProvider

让我困惑的是,当从简单java应用程序执行时,该代码可以正常工作,但当从web服务执行时,它失败了。我还注意到,当从简单java应用程序执行时,docManClient是一个SEIStub对象,但当在axis2 Web服务中执行此代码时,docManClient是JAXWSProxyHandler。我不知道这是否有帮助,或者我该怎么办

我如何修复或深入分析这个classcast异常?有没有办法避免将其强制转换为WSBindingProvider并使用JAXWSProxyHandler设置头

提前谢谢

DocumentManagement_Service docManService = new DocumentManagement_Service();
DocumentManagement docManClient = docManService.getBasicHttpBindingDocumentManagement();
DocumentManagement docManClientP = docManService.getBasicHttpBindingDocumentManagement(null);

try
{
// The namespace of the OTAuthentication object
final String ECM_API_NAMESPACE = "urn:api.ecm.opentext.com";


// Create a SOAP header
SOAPHeader header = MessageFactory.newInstance().createMessage().getSOAPPart().getEnvelope().getHeader();

// Add the OTAuthentication SOAP header element
SOAPHeaderElement otAuthElement = header.addHeaderElement(new QName(ECM_API_NAMESPACE, "OTAuthentication"));

// Add the AuthenticationToken SOAP element
SOAPElement authTokenElement = otAuthElement.addChildElement(new QName(ECM_API_NAMESPACE, "AuthenticationToken"));
authTokenElement.addTextNode(authToken);

// Set the SOAP header on the docManClient

//Object pt = docManService.getPort(do);

//ServiceClient sc = docManService.getServiceClient(docManService.getServiceName())

//BindingProvider bp =  ((BindingProvider) docManClient);

((WSBindingProvider) docManClient).setOutboundHeaders(Headers.create(otAuthElement));

...
文件管理:

       /**


* This class was generated by the JAX-WS RI.


* JAX-WS RI 2.2.9-b130926.1035


* Generated source version: 2.2


* 


*/
"urn:xxxx")
@XmlSeeAlso({
com.opentext.ecm.api.ObjectFactory.class,
com.opentext.livelink.service.core.ObjectFactory.class,
com.opentext.livelink.service.docman.ObjectFactory.class
})
public interface DocumentManagement {


/**
 * 
 * @param nodeID
 */
@WebMethod(operationName = "RemoveFavorite", action = "urn:xxxx/RemoveFavorite")
@RequestWrapper(localName = "RemoveFavorite", targetNamespace = "urn:xxx", className = "xxxx.RemoveFavorite")
@ResponseWrapper(localName = "RemoveFavoriteResponse", targetNamespace = "urn:xxxx", className = "xxxx.RemoveFavoriteResponse")
public void removeFavorite(
    @WebParam(name = "nodeID", targetNamespace = "urn:xxxx")
    long nodeID);
文件管理服务:

    /**
 * This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.9-b130926.1035
 * Generated source version: 2.2
 * 
*/
@WebServiceClient(name = "DocumentManagement", targetNamespace = "urn:xxx", wsdlLocation = "xxxx")
public class DocumentManagement_Service
extends Service



{

static {
    URL url = null;
    WebServiceException e = null;
    try {
        url = new URL("xxxx");
    } catch (MalformedURLException ex) {
        e = new WebServiceException(ex);
    }
    DOCUMENTMANAGEMENT_WSDL_LOCATION = url;
    DOCUMENTMANAGEMENT_EXCEPTION = e;
}

我尝试将WSBindingProvider更改为BindingProvider,但始终失败,错误:“用户名/密码无效”,在从.wsdl文件生成类之后,您应该获得扩展了
javax.xml.ws.service
的服务类,并且接口
…PortType
在您的内部具有与wsdl操作对应的方法。您可以将此接口转换为
javax.xml.ws.BindingProvider
抱歉,我不理解您的意思,我尝试使用它:
Map headers=new HashMap();headers.put(“BindingProvider.PASSWORD_属性”,Collections.singletonList(“pass”);headers.put(“BindingProvider.USERNAME_属性”,Collections.singletonList(“用户”);bindingProvider.getRequestContext().put(MessageContext.HTTP_请求_头,头)显示类的外观
文档管理\u服务
文档管理
现在@Victor1125