2013-06-28 139 views
-1

我有接收用戶定義的數據類型,包括各個領域的他們,我定義爲CXF JAXB XSD問題

<xsd:simpleType name="Percentage"> 
    <xsd:restriction base="xsd:decimal"> 
     <xsd:minInclusive value="0"/> 
     <xsd:maxInclusive value="1"/> 
    </xsd:restriction> 
</xsd:simpleType> 

下面的數據類型百分比之一的Web服務是我得到一個警告,我出錯的任何想法?我從SOAP UI測試Web服務,所以我認爲這與我如何使用我的服務無關,要添加:我首先有一個SOAP Web服務代碼CXF,用於創建XSD的數據類型,然後生成類,使用XJC。也許我需要在Java類的註釋中添加一些內容來明確設置名稱空間?

WARN [EndpointReferenceUtils]: SAXException for newSchema() 
org.xml.sax.SAXParseException: src-resolve.4.2: Error resolving component 'ns0:Percentage'. It was detected that 'ns0:Percentage' is in namespace 'http://www.xyz.ie/cb/projections/converter/model/common', but components from this namespace are not referenceable from schema document 'file:///C:/_dev_env_/CBProjectionsWebService/trunk/cb-projections-jetty/schema3.xsd'. If this is the incorrect namespace, perhaps the prefix of 'ns0:Percentage' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/_dev_env_/CBProjectionsWebService/trunk/cb-projections-jetty/schema3.xsd'. 
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:2541) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:2528) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getGlobalDecl(XSDHandler.java:1387) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDAttributeTraverser.traverseNamedAttr(XSDAttributeTraverser.java:291) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDAttributeTraverser.traverseLocal(XSDAttributeTraverser.java:101) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDAbstractTraverser.traverseAttrsAndAttrGrps(XSDAbstractTraverser.java:610) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDComplexTypeTraverser.processComplexContent(XSDComplexTypeTraverser.java:1059) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDComplexTypeTraverser.traverseComplexTypeDecl(XSDComplexTypeTraverser.java:279) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDComplexTypeTraverser.traverseLocal(XSDComplexTypeTraverser.java:133) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(XSDElementTraverser.java:356) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseLocal(XSDElementTraverser.java:179) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.traverseLocalElements(XSDHandler.java:2049) 
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:582) 
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:552) 
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:519) 
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:485) 
at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:210) 
at org.apache.cxf.wsdl.EndpointReferenceUtils.createSchema(EndpointReferenceUtils.java:698) 
at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:743) 
at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setDataReaderValidation(AbstractInDatabindingInterceptor.java:120) 
at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:94) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) 
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) 
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) 
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) 
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) 
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:163) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) 
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
at org.eclipse.jetty.server.Server.handle(Server.java:365) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937) 
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
at java.lang.Thread.run(Thread.java:619) 
+0

Downvoting;問題是微不足道的,通過閱讀問題中引用的錯誤消息很容易回答。 –

回答

2

(答案:)

的長格式你沒有表現相關的代碼(你的問題會更好,如果它沒有),但在猜想,你的百分比類型被稱爲到另一個模式文檔中,例如CBProjectionsWebService/trunk/cb-projections-jetty/schema3.xsd中的文檔。

該模式文檔包含一個名稱空間聲明,它將某些前綴(推測爲ns0)綁定到名稱空間http://www.xyz.ie/cb/projections/converter/model/common,並引用使用具有該前綴的Qname的類型(例如ns0:Percentage)。

然而,聲明命名空間前綴還不夠:XSD要求如果您從具有給定目標命名空間的模式文檔引用不同名稱空間中的組件,則必須導入該其他命名空間。所以 - 正如錯誤消息說 - 你需要包括模式文檔中導入:

<xsd:import namespace= 
    "http://www.xyz.ie/cb/projections/converter/model/common" 
/> 

在某些情況下,你可能還需要告訴系統在哪裏可以找到該命名空間的架構文檔:

<xsd:import namespace= 
    "http://www.xyz.ie/cb/projections/converter/model/common" 
    schemaLocation="..." 
/> 

在一般情況下,這是一個好主意,如果你限制對驗證程序的調用實際位置,或單個驅動程序文件有助於維護互操作性架構的處理器中,但很多人過上幸福富裕的生活而忽視這個規則,所以請在這個問題上做出自己的想法。

(答案:)

的縮寫形式讀取錯誤消息。

+0

百分比在另一個架構中,但未稱爲CBProjectionsWebService/trunk/cb-projections-jetty/schema3.xsd。 –

+1

如果我推測百分比是在schema3.xsd中聲明的,那麼您的評論就是關鍵的一點。因爲我沒有,我只能得出結論,你已經閱讀我的答案,同樣小心你閱讀原始錯誤信息。如果您想解決問題,請閱讀並理解錯誤消息。如果您想對答案進行有用的評論,請閱讀並理解答案。 –