2011-04-10 115 views
0

我正在做一个web服务在休息,春天,cxf和tomcat。Spring Rest CXF [豆错误] Tomcat

链接完整的项目:http://www55.zippyshare.com/v/99585767/file.html

从来就上了车豆这个错误。 无法弄清楚为什么会发生这种情况?

SEVERE: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'restContainer': Cannot resolve reference to bean 'timeService' while setting bean property 'serviceBeans' with key [0]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'timeService' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)

timeService.java

@Service("timeService") 
@Path("/time") 
public class TimeService { 

    @GET 
    @Produces("text/plain") 
    public String getDateTime() 
    { 
     DateFormatter formatter = new DateFormatter("dd/MM/yyyy hh:mm:ss"); 
     return formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); 
    } 
} 

的beans.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <import resource="classpath:META-INF/cxf/cxf.xml"/> 
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> 

    <jaxrs:server id="restContainer" address="/"> 
     <jaxrs:serviceBeans> 
      <ref bean="timeService"/> 
     </jaxrs:serviceBeans> 
    </jaxrs:server> 

</beans> 

这是我的文件,我不能找出什么是错的。这让我疯狂!

回答

0

Spring documentation说你需要添加一个元素来指导你的@Service -nnotated bean的发现。例如,如果你的bean是在包org.example或其子包之一,你会使用一个组件扫描仪配置在beans.xml中是这样的:

<context:component-scan base-package="org.example"/> 

(只要它的<beans>内元素,无论它是高于还是低于<jaxrs:server>元素都是很好的。)

+0

为了记录,我更愿意在beans.xml中显式地描述我的bean,部分原因是因为它们中的一些是库中类的实例,没有写。因人而异。 – 2011-04-10 16:13:20

+0

仍给出了相同的错误“没有名为'timeService'的bean被定义为” – bruno 2011-04-10 17:18:32

+0

@bruno:那么这意味着它不会在注释中查看类。这可能会失败的原因有很多,但我无意调试整个项目。检查你的日志,看看它找到了什么。 (如果你不知道,*打开你的日志记录!*)如果最糟糕的情况出现了,最好回到beans.xml中显式声明你的bean;我知道确实有效,因为我自己使用它。 :-) – 2011-04-10 22:01:40