2016-09-26 52 views
0

我成功地使用了https wsdl usign CXF客戶端。現在我需要使用Axis2 ADB客戶端來做同樣的事情。我已經用證書更新了jdk安全庫。當我使用http代碼時,沒有錯誤。當我將其更改爲https時,這是錯誤。所有依賴(生成的)類都是Stub類中的靜態類。我沒有看到任何缺課。使用Axis2 ADB客戶端使用https wsdl?例外:缺少指示符字段值的類

請建議一種方法來使用https wsdl。

org.apache.axis2.AxisFault: javax.xml.bind.JAXBException 
- with linked exception: 
[org.xml.sax.SAXException: 
Exception Description: Missing class for indicator field value [ns1:ssssAuthenticateUserVOIn] of type [class java.lang.String]. 
Descriptor: XMLDescriptor(oracle.e1.bssv.JP55USRB.valueobject.SSSS_AuthenticateUserVOIn --> [DatabaseTable(ns0:SSSS_AuthenticateUserMethod)]) 
Exception [EclipseLink-43] (Eclipse Persistence Services - 2.5.2): org.eclipse.persistence.exceptions.DescriptorException 
Exception Description: Missing class for indicator field value [ns1:ssssAuthenticateUserVOIn] of type [class java.lang.String]. 
Descriptor: XMLDescriptor(oracle.e1.bssv.JP55USRB.valueobject.SSSS_AuthenticateUserVOIn --> [DatabaseTable(ns0:SSSS_AuthenticateUserMethod)])] 

模式:

<xsd:complexType name="ssss_AuthenticateUserVOIn"> 
<xsd:complexContent> 
<xsd:extension base="ns0:valueObject"> 
<xsd:sequence> 
<xsd:element name="description" type="xsd:string" minOccurs="0"/> 
<xsd:element name="enterpriseOnePassword" type="xsd:string" minOccurs="0"/> 
<xsd:element name="errorCode" type="xsd:string" minOccurs="0"/> 
<xsd:element name="scheduledUserRole" type="xsd:string" minOccurs="0"/> 
<xsd:element name="userID" type="xsd:string" minOccurs="0"/> 
</xsd:sequence> 
</xsd:extension> 
</xsd:complexContent> 
</xsd:complexType> 
<xsd:element name="SSSS_AuthenticateUserMethod" type="ns0:ssss_AuthenticateUserVOIn" nillable="true"/> 

回答

0

我想通了自己的解決方案。我比較了由java代碼和soapui生成的xml。我注意到,在java代碼中它是 和SOAPUI中它是 所以我回到代碼並評論這個xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance 「的xsi:type =」 NS1:「被獲取添加ssssAuthenticateUserVOIn:

在公共無效的serialize(最終javax.xml.namespace.QName中parentQName,javax.xml.stream.XMLStreamWriter的XmlWriter,布爾serializeType)方法我評論該塊它開始工作:

if ((namespacePrefix != null) 
        && (namespacePrefix.trim().length() > 0)) { 
       writeAttribute("xsi", 
         "http://www.w3.org/2001/XMLSchema-instance", "type", 
         namespacePrefix + ":ssssAuthenticateUserVOIn", 
         xmlWriter); 
      } else { 
       writeAttribute("xsi", 
         "http://www.w3.org/2001/XMLSchema-instance", "type", 
         "ssssAuthenticateUserVOIn", xmlWriter); 
      } 

我力甚至需要爲HTTPS協議註冊,也沒有設置任何系統屬性信任或密匙因爲我有已經將服務器證書添加到jssecacerts中。除了評論此區塊外,唯一的其他更改是http到https的URL。而已。我不知道它是如何在http wsdl下工作的。 希望這可以幫助那裏的人。