2012-06-01 4 views
0

Я хочу создать отдых api с использованием reasteasy и jax-rs весной. чтобы сделать следующие строками являются частью моего контекста приложения:Боб разрешен как нуль во время инъекции конструктора

<bean id="RESTeasyProviderFactory" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean"> 
    <property name="attributeName" value="org.jboss.resteasy.spi.ResteasyProviderFactory" /> 
</bean> 

<bean id="RESTeasyRegistry" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean"> 
    <property name="attributeName" value="org.jboss.resteasy.spi.Registry" /> 
</bean> 

<bean id="RESTeasyBeanPostProcessor" class="org.jboss.resteasy.plugins.spring.SpringBeanProcessor"> 
    <constructor-arg> 
     <bean class="org.jboss.resteasy.core.AsynchronousDispatcher"> 
      <constructor-arg ref="RESTeasyProviderFactory" /> 
     </bean> 
    </constructor-arg> 
    <constructor-arg ref="RESTeasyRegistry" /> 
    <constructor-arg ref="RESTeasyProviderFactory" /> 
</bean> 

во время компонента сканирования это вызвало NPE во время компонента сканирования, когда мой первый интерфейс остального боб найден:

Caused by: java.lang.NullPointerException 
     at org.jboss.resteasy.plugins.spring.SpringBeanProcessor$ResteasyBeanPostProcessor.getInjector(SpringBeanProcessor.java:133) 
     at org.jboss.resteasy.plugins.spring.SpringBeanProcessor$ResteasyBeanPostProcessor.postProcessAfterInitialization(SpringBeanProcessor.java:125) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     ... 11 more 

отладчик показывает, что компонент resteasyregistry и resteasyproviderfactory bean-компоненты разрешены как null.

Может кто-нибудь объяснить, как это может произойти? В качестве теста я изменил xml, поэтому реестр и фабрика были установлены как свойства, но даже там, когда сеттер называется реестром, и фабрика имеют значение null.

* EDIT2: весна журнал отладки *

здесь соответствующая часть из журнала пружинный отладки.

2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyBeanPostProcessor' 
2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyBeanPostProcessor' 
2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.jboss.resteasy.core.AsynchronousDispatcher#e0380' 
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyProviderFactory' 
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyProviderFactory' 
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyProviderFactory' to allow for resolving potential circular references 
2012-06-01 12:13:34,350 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyProviderFactory' 
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.jboss.resteasy.core.AsynchronousDispatcher#e0380' 
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyRegistry' 
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyRegistry' 
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyRegistry' to allow for resolving potential circular references 
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyRegistry' 
2012-06-01 12:13:34,389 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'RESTeasyProviderFactory' 
2012-06-01 12:13:34,393 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyBeanPostProcessor' to allow for resolving potential circular references 
2012-06-01 12:13:34,393 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyBeanPostProcessor' 
+0

Что-нибудь еще в журналах? Являются ли имена свойств действительно «атрибутомName» для первых двух компонентов? –

+0

эти свойства установлены правильно (да, их называют attribueName). но в конструкторе PostProcessor оба refs разрешены как null (no warning, exception, ...) – Laures

+0

Я неправильно читал bean def и искал неправильный класс - извините. –

ответ

-1

Я исправил это, написав свои собственные одноэлементные заводы для двух фасоль. его раздражает и не нужно, но это сработало.

В конце концов мы полностью изменили эту часть конфигурации, поэтому даже это уродливое решение стало ненужным.

1

Вы пытались использовать указатели на своих конструкторах?

например

<constructor-arg index="0"><value>7500000</value></constructor-arg> 
    <constructor-arg index="1"><value>42</value></constructor-arg> 

Также ваши атрибуты, кажется, относятся к классам:

<property name="attributeName" value="org.jboss.resteasy.spi.Registry" /> 

Не могли бы вы опубликовать ваши классы или сказать нам именно то, что вы пытаетесь привнести здесь?

+0

есть. не работает. – Laures

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