0

JAXBは初めてです。wsdlファイルが提供され、apache-cxfユーティリティwsdl2javaを使用して多数のJavaクラスを取得し、そこからWebサービスを実装しました。しかし、サービスでクライアントサーバーテストを開始すると、次の例外が発生します。

мар 25, 2013 12:19:36 PM org.apache.cxf.wsdl.EndpointReferenceUtils createSchema
WARNING: SAXException for newSchema()
org.xml.sax.SAXParseException; src-import.1.1: The namespace attribute 'http://www.aaa.com/bbb/ccc/ddd' of an <import> element information item must not be the same as the targetNamespace of the schema it exists in.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source)
    at org.apache.xerces.impl.xs.traversers.XSDHandler.constructTrees(Unknown Source)
    at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
    at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
    at org.apache.cxf.wsdl.EndpointReferenceUtils.createSchema(EndpointReferenceUtils.java:698)
    at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:743)
    at org.apache.cxf.binding.soap.interceptor.SoapHeaderInterceptor.handleMessage(SoapHeaderInterceptor.java:107)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:800)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1590)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1488)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1307)
    at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:50)
    at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:229)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133)

.............
INFO: Schema for: http://www.globe.com/warcraft/wsdl/amax
<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:tns="http://www.aaa.com/bbb/ccc/ddd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.aaa.com/bbb/ccc/ddd" version="1.0">
<xs:import namespace="http://www.aaa.com/bbb/ccc/ddd"/>
...........

なぜこの中間XMLが生成され、それ自体がインポートされるのでしょうか。このインポートタグの表示をなんとかキャンセルできますか?理由は最初のwsdlにあるか、バグである可能性があります。

前もって感謝します

4

3 に答える 3

2

問題は、生成されたProxyServiceImplクラスで、@WebServiceアノテーションにwsdlLocationがないためです。

@javax.jws.WebService(
                  serviceName = "ServiceName",
                  portName = "ServicePort",
                  targetNamespace = "http://www.aaa.com/bbb/ccc/ddd",
                  wsdlLocation = "path_to_wsdl",
                  endpointInterface = "ProxyService_class")

私がそれを追加したとき、すべてがうまくいきました。

于 2013-06-04T08:45:03.163 に答える
1

例外が示唆するように

org.xml.sax.SAXParseException; src-import.1.1:要素情報アイテムの名前空間属性' http://www.aaa.com/bbb/ccc/ddd 'は、それが存在するスキーマのtargetNamespaceと同じであってはなりません。

ターゲットの名前空間を変更して、これを参照してみてください

于 2013-03-25T13:38:11.013 に答える
0

wsdlLocationについてのあなたの答えは私を助けました、しかし私はまだコメントすることができないので、私はただもっと情報を追加します。オプションとして、pom.xmlを変更し、そこにwsdlLocationを追加することもできます。

<wsdlOption>
    <wsdl>${basedir}/src/main/resources/cxf/webservice.wsdl</wsdl>
    <wsdlLocation>classpath:cxf/webservice.wsdl</wsdlLocation>
<wsdlOption>
于 2014-12-17T14:20:27.240 に答える