2012-08-16 85 views
0

我有一個WSDL和一些用於生成JAX-WS Web服務客戶端的模式文件。當我試圖讓客戶的實例,我得到這個堆棧跟蹤:嘗試設置Web服務客戶端時出現「prefix is null」錯誤

 
Caused by: java.lang.IllegalArgumentException: The specified prefix was null. 
    at com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwIllegalArgumentException(StAXMessageProvider.java:42) 
    at com.ibm.xml.xlxp.api.stax.XMLStreamReaderImpl.getNamespaceURI(XMLStreamReaderImpl.java:721) 
    at com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl$XMLStreamReaderProxy.getNamespaceURI(XMLInputFactoryImpl.java:212) 
    at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.getNamespaceURI(XMLStreamReaderFilter.java:242) 
    at com.sun.xml.internal.ws.wsdl.parser.ParserUtil.getQName(ParserUtil.java:78) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parsePortTypeOperationInput(RuntimeWSDLParser.java:721) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parsePortTypeOperation(RuntimeWSDLParser.java:694) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parsePortType(RuntimeWSDLParser.java:668) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(RuntimeWSDLParser.java:305) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:136) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:227) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:190) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:160) 
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:92) 
    at javax.xml.ws.Service.(Service.java:67) 
... 

它看起來對我很重要,如服務類試圖解析WSDL作爲其初始化的一部分,然後失敗因爲有些前綴是空的。行at com.sun.xml.internal.ws.wsdl.parser.ParserUtil.getQName(ParserUtil.java:78)表明它無法解析QName。創建服務時,QName設置如下:

new QName("http://www.mycompany.ca/some/schema/MyService", "MyService") 

雖然錯誤消息不太清楚。是"MyService"之前需要的前綴還是WSDL所需的更改(我不是WSDL所有者,因此更改難以推送給其他團隊)。

(環境是RAD 7.5 7.0)

回答

1

如果您檢查堆棧跟蹤的細節,你會發現,這個問題是與WSDL端口類型的操作輸入的名稱:

<wsdl:definitions .... > 
    <wsdl:portType .... > 
    <wsdl:operation> 
     <wsdl:input message="qname"/> <--- your problem is here 
    </wsdl:operation> 
    </wsdl:portType > 
</wsdl:definitions> 
+0

你說得對,它是有道理的,這是一個端口類型的問題。所有的操作格式爲: ',它們都沒有前綴。但是,在這種情況下,我並不認爲前綴是必要的。 – FrustratedWithFormsDesigner 2012-08-16 19:25:48

+0

只有當默認名稱空間有效時它們纔是必需的。 – 2012-08-16 19:29:54

+0

有趣。我爲默認名稱空間添加了一個名稱空間前綴,然後添加了前綴,以便現在輸入如下所示:''。重新生成客戶端。完全相同的錯誤... – FrustratedWithFormsDesigner 2012-08-16 19:58:45

相關問題