2013-06-28 2 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> 

Ниже предупреждение, что я получаю , любые идеи, в которых я ошибаюсь? Я тестирую веб-сервис из пользовательского интерфейса SOAP, поэтому я предполагаю, что это не имеет никакого отношения к тому, как я использую свои услуги, чтобы добавить: у меня сначала есть код веб-служб SOAP, 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-projectionions-jetty/schema3.xsd. –

+1

Ваш комментарий был бы к делу, если бы я предположил, что Percentage был объявлен в schema3.xsd; так как я этого не сделал, могу только сделать вывод, что вы прочитали мой ответ с такой же тщательностью, что и первоначальное сообщение об ошибке. Если вы хотите решить проблему, прочитайте и поймите сообщение об ошибке. Если вы хотите с честью комментировать ответ, прочитайте и поймите ответ. –

Смежные вопросы