You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Sébastien Lorber <lo...@gmail.com> on 2012/11/12 16:49:40 UTC

CXF JAXRS namespace with Spring profiles

Hello,


I have a problem to declare a JAXRS server with different "serviceBeans"
for each Spring env.
What i'd like is do something like that:

<jaxrs:server id="jaxrsServer" address="/service1">
  <jaxrs:serviceBeans>
    <beans profile="dev">
      <ref bean="serviceBean1" />
      <ref bean="serviceBean2" />
    </beans>
    <beans profile="prod">
      <ref bean="serviceBean2" />
      <ref bean="serviceBean3" />
    </beans>
  </jaxrs:serviceBeans></jaxrs:server>

It is not possible to do so, and I'd like to avoid duplicating the whole
jaxRS config.


I have tried to reference a list:

  <bean id="serviceBeansList" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <ref bean="serviceBean1"/>
        <ref bean="serviceBean2"/>
      </list>
    </constructor-arg>
  </bean>
<jaxrs:server id="jaxrsServer" address="/service1">
  <jaxrs:serviceBeans>
      <ref bean="serviceBeansList" />
  </jaxrs:serviceBeans></jaxrs:server>


But it doesn't work because the namespace parser seems to always look for a
list.
org.apache.cxf.jaxrs.blueprint.JAXRSServerFactoryBeanDefinitionParser#mapElement
So it doesn't find "2 service beans" but it finds "1 arraylist" and the
list is not flattened.

Any idea?

My original SO question:
http://stackoverflow.com/questions/13344564/using-spring-profiles-inside-a-namespace


I'd like to keep going with the namespace without having to create my own
factorybeans.


Thanks!

Re: CXF JAXRS namespace with Spring profiles

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi
On 12/11/12 15:49, Sébastien Lorber wrote:
> Hello,
>
>
> I have a problem to declare a JAXRS server with different "serviceBeans"
> for each Spring env.
> What i'd like is do something like that:
>
> <jaxrs:server id="jaxrsServer" address="/service1">
>    <jaxrs:serviceBeans>
>      <beans profile="dev">
>        <ref bean="serviceBean1" />
>        <ref bean="serviceBean2" />
>      </beans>
>      <beans profile="prod">
>        <ref bean="serviceBean2" />
>        <ref bean="serviceBean3" />
>      </beans>
>    </jaxrs:serviceBeans></jaxrs:server>
>
> It is not possible to do so, and I'd like to avoid duplicating the whole
> jaxRS config.
>
Interesting, I've never heard of Spring profiles before...
What happens in the above case, is it a validation error which is reported ?

>
> I have tried to reference a list:
>
>    <bean id="serviceBeansList" class="java.util.ArrayList">
>      <constructor-arg>
>        <list>
>          <ref bean="serviceBean1"/>
>          <ref bean="serviceBean2"/>
>        </list>
>      </constructor-arg>
>    </bean>
> <jaxrs:server id="jaxrsServer" address="/service1">
>    <jaxrs:serviceBeans>
>        <ref bean="serviceBeansList" />
>    </jaxrs:serviceBeans></jaxrs:server>
>
>
> But it doesn't work because the namespace parser seems to always look for a
> list.
> org.apache.cxf.jaxrs.blueprint.JAXRSServerFactoryBeanDefinitionParser#mapElement
> So it doesn't find "2 service beans" but it finds "1 arraylist" and the
> list is not flattened.
>
> Any idea?

Is there a better, more correct way to link to a list of beans in 
Spring, or is something like

<ref bean="serviceBeansList" />

the only way to do it ?

>
> My original SO question:
> http://stackoverflow.com/questions/13344564/using-spring-profiles-inside-a-namespace
>
>
> I'd like to keep going with the namespace without having to create my own
> factorybeans.
>

I'd like to explore what has to be done for the Spring profiles to work 
better

Cheers, Sergey

>
> Thanks!
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com