Webサービスを実行するために使用するTomcat 7.0 Webサーバーがあります。 WebサービスフレームワークはCXF 2.5.2です。Webserverは形式の正しくないサービスを生成します.wsdl
Eclipse Web Service ExplorerからWebサービスをテストすると、すべてが想定通りに動作します。 (Eclipseを使用して)WSDLからJavaクライアントを生成し、それを実行するときにサービスの実装からsuper(wsdlLocation, serviceName)
を呼び出すときしかし、私は次のエラーを取得する:
Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:150)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:91)
at javax.xml.ws.Service.<init>(Service.java:77)
at test.Test_Service.<init>(Test_Service.java:43)
at test.Test_TestSOAP_Client.main(Test_TestSOAP_Client.java:47)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:94)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:148)
... 4 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'c' (code 99) in start tag Expected a quote at [row,col,system-id]: [1,208,"http://www.example.com:8081/TestWS/services?wsdl"]
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:240)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:191)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
... 6 more
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'c' (code 99) in start tag Expected a quote at [row,col,system-id]: [1,208,"http://www.example.com:8081/TestWS/services?wsdl"]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:639)
at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:3005)
at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2926)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2802)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1050)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1080)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:974)
at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:901)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:231)
... 8 more
興味深い部分はUnexpected character 'c' (code 99) in start tag Expected a quote at [row,col,system-id]: [1,208,"http://www.example.com:8081/TestWS/services?wsdl"]
メッセージでなければなりません。生成されたservices.wsdlを検査するとき、私はこの問題は、メタ一部であることが見出さ:
<meta http-equiv=content-type content="text/html; charset=UTF-8">
content-type
は、通常は引用符にラップする必要があります。これは、使用されているフレームワーク/サーバーのいずれかの既知のバグですか?これを回避するには何ができますか?そして、なぜEclipse Web Services Explorerを使用しても問題はありませんか?それはフォールトトレラントです(私のFirefoxは、生成されたwsdlのグラフィカルな表現を表示するのに何の問題もないようです)。
これをCXFメーリングリストに転送しました。ここに更新が掲載されます。 'com.ctc.wstx'はWoodstock XMLプロセッサーのようです。私がコントロールできるものは何もない... – ubuntudroid
問題が見つかりました。私の答えを見てください。 – ubuntudroid