2017-10-08 1 views
0

Rest WebService를 구현하기 위해 Apache CXF 프레임 워크를 사용하고 있습니다. Spring 4.3.10 버전을 사용하고 있습니다. 내가 사용하는 경우Apache CXF Rest Spring을 사용한 서비스

<jaxrs:server id="userManagerREST" address="/rest/UserManager"> 
    <jaxrs:serviceBeans> 
     <ref bean="userManagerService"/> 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
     <ref bean='jsonProvider' /> 
    </jaxrs:providers> 
</jaxrs:server> 

: 코드 아래처럼 이전에이 구성된 것을 : 내가 직면하고 문제는 내가 봄 업그레이드 된 버전에 약간의 변화가 있다고 생각 .I<jaxrs:server>요소을 사용할 수없는 오전 <jaxrs> 태그가 나는 예외 아래에 무엇입니까 :

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 29 in XML document from ServletContext resource [/WEB-INF/spring/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 29; columnNumber: 67; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'jaxrs:server'. 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

Spring 설정 파일 내 네임 스페이스 선언을 검색 할 수 있습니다 :

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs-common.xsd"> 

위의 코드에서 볼 수 있듯이 jaxrs 네임 스페이스가 위의 오류를 발생 시켰습니다. 하지만 이제 새 태그를 발견했습니다 : <jaxrs:model>. [Cntrl + Space 옵션을 사용하여 봄 빈 구성 파일 내에 이클립스에서이 옵션을 얻었습니다.].

사용법을 알고 싶습니다. 누구나 이에 대한 적절한 예를 제공 할 수 있습니까?

+0

코드 스 니펫이 정상적으로 보이며 Spring 버전에서 작동해야합니다. jaxrs : model에 어떤 오류 메시지가 나타 났습니까? –

+0

@Dennis가 메인 포스트에서 여러분의 의견에 답했습니다. 또한 스프링스 4.3.10에는 jaxrs 태그가없는 문법적인 변화가 있다고 생각합니다. –

+0

jaxrs 네임 스페이스는 Spring의 일부가 아니고 CXF이다. 따라서 Spring 버전을 변경하는 것은 중요하지 않습니다. –

답변

0

나는 몇 년 전 (지금은 XML 기반의 구성을 사용하지 않음) 똑같은 문제에 직면 해 있었지만, 이클립스 자동 선택 문제를 기억하지 못하거나 파일이 옮겨졌습니다. 스키마 위치가 문제가되는 경우 jaxrs-common.xsd에서 jaxrs.xsd으로 변경하십시오.

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> 

당신은 cxf-rt-frontend-jaxrs.jarschemas 디렉토리에 모두 XSD 년대를 확인할 수 있습니다.

+0

감사합니다 Karthik.It 근무했습니다. –

관련 문제