You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Yossi Cohen <Yo...@Amdocs.com> on 2013/12/13 09:18:41 UTC

Autowire CXF Bus

Hello,

I use CXF, Spring and Tomcat. What way can CXF Feature be added programmatically to CXF Bus instance? What way can this be done via CXF XML (at bus level)?
Also, if I do not want configure a bunch of features separately, does it make sense to aggregate them within a newly created Feature (see below)?

public class MyCompositeFeature extends AbstractFeature {
    @Override
    public void initialize(Server server, Bus bus) {
       AbstractFeature feature = new ServiceCleanupFeature();
       bus.getFeatures().add(feature);
       feature.initialize(server, bus);
    }
}

Thanks,
Yossi


This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
you may review at http://www.amdocs.com/email_disclaimer.asp

RE: Autowire CXF Bus

Posted by Yossi Cohen <Yo...@Amdocs.com>.
Hi,



I would like to set up a service invoker for all my endpoints by somehow configuring the CXF Bus, but so far with no much success.



I tried this:



public class ServiceCleanupFeature extends AbstractFeature {
public class ServiceCleanupFeature extends AbstractFeature {
    @Override
    public void initialize(Server server, Bus bus) {
        Service service = server.getEndpoint().getService();
        service.setInvoker(new ServiceCleanupInvoker(service.getInvoker()));
    }

}



But then when configuring the feature at bus level it fails (NPE) because there is no endpoint at that stage.\

Is there a best practice of how to set up a service invoker for all endpoints?

Should I use an interceptor? If yes, how?



Best Regards,

Yossi Cohen



> On Dec 13, 2013, at 10:39 PM, "Daniel Kulp" <dk...@apache.org>> wrote:

>

>

>> On Dec 13, 2013, at 3:17 PM, Yossi Cohen <Yo...@Amdocs.com>> wrote:

>>

>> Thank you Daniel, that's great news.

>> How does CXF resolve feature name into a qualified class name?

>> E.g., does it use this convention demonstrated below:

>> <cxf:myFeature/>

>>

>> Then our class should implement Feature and have the name X.Y…MyFeatureFeature?

>

> No, you would need to use the <bean class=“…”/> form instead of a  <cxf:XXXX/> form.   Anything in one of the “cxf” namespaces has to be defined explicitely in the CXF schemas or Spring will complain about them at validation time.   We’ve defined a few for our common ones (like logging) but not for all of them.

>

> You COULD write your own namespace handler and schemas and such for your own, but that gets complex.   For simple things like a single feature, it’s easier to just use the <bean …> form.

>

> Dan

>

>

>

>

>>

>> Best Regards,

>> Yossi Cohen

>> (Sent from my iPad)

>>

>>> On Dec 13, 2013, at 4:50 PM, "Daniel Kulp" <dk...@apache.org>> wrote:

>>>

>>>

>>>> On Dec 13, 2013, at 9:08 AM, Yossi Cohen <Yo...@Amdocs.com>> wrote:

>>>>

>>>> Thank you Freeman Fang.

>>>>

>>>> Regarding:

>>>>

>>>> <cxf:bus>

>>>>     <cxf:features>

>>>>     your feature here

>>>>     </cxf:features>

>>>> </cxf:bus>

>>>>

>>>> All the examples I found were about adding a feature defined into

>>>> cxf namespace, e.g.,  <cxf:logging/>

>>>>

>>>> Is it explained anywhere how to define my own custom feature?

>>>

>>> Yep.   Just create an object that implements the org.apache.cxf.feature.Feature interface.

>>>

>>>> And second (more important for me right now), is it possible to just list the beans implementing Feature, e.g.:

>>>>

>>>> <cxf:bus>

>>>>     <cxf:features>

>>>>            <list>

>>>>                   <ref bean="feature1" />

>>>>                  <ref bean=" feature2" />

>>>>           </list>

>>>>    </cxf:features

>>>> </cxf:bus>

>>>

>>> The cxf:features element is a list so it would just be:

>>>

>>> <cxf:features>

>>> <ref bean=“feature1”/>

>>> <ref bean=“feature2”/>

>>> </cxf:features>

>>>

>>>

>>> Dan

>>>

>>>>

>>>> Best Regards,

>>>> Yossi Cohen

>>>>

>>>>

>>>> -----Original Message-----

>>>> From: Freeman Fang [mailto:freeman.fang@gmail.com]

>>>> Sent: Friday, December 13, 2013 10:27 AM

>>>> To: users@cxf.apache.org<ma...@cxf.apache.org>

>>>> Subject: Re: Autowire CXF Bus

>>>>

>>>> Hi,

>>>>

>>>> My comment inline

>>>> -------------

>>>> Freeman(Yue) Fang

>>>>

>>>> Red Hat, Inc.

>>>> FuseSource is now part of Red Hat

>>>>

>>>>

>>>>

>>>>> On 2013-12-13, at 下午4:18, Yossi Cohen wrote:

>>>>>

>>>>> Hello,

>>>>>

>>>>> I use CXF, Spring and Tomcat. What way can CXF Feature be added programmatically to CXF Bus instance? What way can this be done via CXF XML (at bus level)?

>>>>

>>>> Something like

>>>> <cxf:bus>

>>>>     <cxf:features>

>>>>     your feature here

>>>>     </cxf:features>

>>>> </cxf:bus>

>>>>

>>>>> Also, if I do not want configure a bunch of features separately, does it make sense to aggregate them within a newly created Feature (see below)?

>>>>>

>>>>> public class MyCompositeFeature extends AbstractFeature {

>>>>> @Override public void initialize(Server server, Bus bus) {

>>>>>   AbstractFeature feature = new ServiceCleanupFeature();

>>>>>   bus.getFeatures().add(feature);

>>>>>   feature.initialize(server, bus); } }

>>>>

>>>> Yep, you can do this way

>>>>>

>>>>> Thanks,

>>>>> Yossi

>>>>>

>>>>>

>>>>> This message and the information contained herein is proprietary

>>>>> and confidential and subject to the Amdocs policy statement, you

>>>>> may review at http://www.amdocs.com/email_disclaimer.asp

>>>>

>>>>

>>>> This message and the information contained herein is proprietary

>>>> and confidential and subject to the Amdocs policy statement, you

>>>> may review at http://www.amdocs.com/email_disclaimer.asp

>>>

>>> --

>>> Daniel Kulp

>>> dkulp@apache.org<ma...@apache.org> - http://dankulp.com/blog Talend Community Coder -

>>> http://coders.talend.com

>

> --

> Daniel Kulp

> dkulp@apache.org<ma...@apache.org> - http://dankulp.com/blog Talend Community Coder -

> http://coders.talend.com

>

This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
you may review at http://www.amdocs.com/email_disclaimer.asp

Re: Autowire CXF Bus

Posted by Daniel Kulp <dk...@apache.org>.
On Dec 13, 2013, at 9:08 AM, Yossi Cohen <Yo...@Amdocs.com> wrote:

> Thank you Freeman Fang.
> 
> Regarding:
> 
> <cxf:bus>
>        <cxf:features>
> 	   your feature here
>        </cxf:features>
>    </cxf:bus>
> 
> All the examples I found were about adding a feature defined into cxf namespace, e.g.,  <cxf:logging/>
> 
> Is it explained anywhere how to define my own custom feature?

Yep.   Just create an object that implements the org.apache.cxf.feature.Feature interface.

> And second (more important for me right now), is it possible to just list the beans implementing Feature, e.g.:
> 
> <cxf:bus>
>        <cxf:features>
>               <list>
>                      <ref bean="feature1" />
>                     <ref bean=" feature2" />                
>              </list>        
>       </cxf:features
> </cxf:bus>

The cxf:features element is a list so it would just be:

<cxf:features>
   <ref bean=“feature1”/>
   <ref bean=“feature2”/>
</cxf:features>


Dan

> 
> Best Regards,
> Yossi Cohen
> 
> 
> -----Original Message-----
> From: Freeman Fang [mailto:freeman.fang@gmail.com] 
> Sent: Friday, December 13, 2013 10:27 AM
> To: users@cxf.apache.org
> Subject: Re: Autowire CXF Bus
> 
> Hi,
> 
> My comment inline
> -------------
> Freeman(Yue) Fang
> 
> Red Hat, Inc. 
> FuseSource is now part of Red Hat
> 
> 
> 
> On 2013-12-13, at 下午4:18, Yossi Cohen wrote:
> 
>> Hello,
>> 
>> I use CXF, Spring and Tomcat. What way can CXF Feature be added programmatically to CXF Bus instance? What way can this be done via CXF XML (at bus level)?
> 
> Something like
> <cxf:bus>
>        <cxf:features>
> 	   your feature here
>        </cxf:features>
>    </cxf:bus>
> 
>> Also, if I do not want configure a bunch of features separately, does it make sense to aggregate them within a newly created Feature (see below)?
>> 
>> public class MyCompositeFeature extends AbstractFeature {
>>   @Override
>>   public void initialize(Server server, Bus bus) {
>>      AbstractFeature feature = new ServiceCleanupFeature();
>>      bus.getFeatures().add(feature);
>>      feature.initialize(server, bus);
>>   }
>> }
> 
> Yep, you can do this way
>> 
>> Thanks,
>> Yossi
>> 
>> 
>> This message and the information contained herein is proprietary and 
>> confidential and subject to the Amdocs policy statement, you may 
>> review at http://www.amdocs.com/email_disclaimer.asp
> 
> 
> This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
> you may review at http://www.amdocs.com/email_disclaimer.asp

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


RE: Autowire CXF Bus

Posted by Yossi Cohen <Yo...@Amdocs.com>.
Thank you Freeman Fang.

Regarding:

<cxf:bus>
        <cxf:features>
	   your feature here
        </cxf:features>
    </cxf:bus>

All the examples I found were about adding a feature defined into cxf namespace, e.g.,  <cxf:logging/>

Is it explained anywhere how to define my own custom feature? And second (more important for me right now), is it possible to just list the beans implementing Feature, e.g.:

<cxf:bus>
        <cxf:features>
               <list>
                      <ref bean="feature1" />
                     <ref bean=" feature2" />                
              </list>        
       </cxf:features
</cxf:bus>

Best Regards,
Yossi Cohen


-----Original Message-----
From: Freeman Fang [mailto:freeman.fang@gmail.com] 
Sent: Friday, December 13, 2013 10:27 AM
To: users@cxf.apache.org
Subject: Re: Autowire CXF Bus

Hi,

My comment inline
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat



On 2013-12-13, at 下午4:18, Yossi Cohen wrote:

> Hello,
> 
> I use CXF, Spring and Tomcat. What way can CXF Feature be added programmatically to CXF Bus instance? What way can this be done via CXF XML (at bus level)?

Something like
<cxf:bus>
        <cxf:features>
	   your feature here
        </cxf:features>
    </cxf:bus>

> Also, if I do not want configure a bunch of features separately, does it make sense to aggregate them within a newly created Feature (see below)?
> 
> public class MyCompositeFeature extends AbstractFeature {
>    @Override
>    public void initialize(Server server, Bus bus) {
>       AbstractFeature feature = new ServiceCleanupFeature();
>       bus.getFeatures().add(feature);
>       feature.initialize(server, bus);
>    }
> }

Yep, you can do this way
> 
> Thanks,
> Yossi
> 
> 
> This message and the information contained herein is proprietary and 
> confidential and subject to the Amdocs policy statement, you may 
> review at http://www.amdocs.com/email_disclaimer.asp


This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
you may review at http://www.amdocs.com/email_disclaimer.asp

Re: Autowire CXF Bus

Posted by Freeman Fang <fr...@gmail.com>.
Hi,

My comment inline
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat



On 2013-12-13, at 下午4:18, Yossi Cohen wrote:

> Hello,
> 
> I use CXF, Spring and Tomcat. What way can CXF Feature be added programmatically to CXF Bus instance? What way can this be done via CXF XML (at bus level)?

Something like
<cxf:bus>
        <cxf:features>
	   your feature here
        </cxf:features>
    </cxf:bus>

> Also, if I do not want configure a bunch of features separately, does it make sense to aggregate them within a newly created Feature (see below)?
> 
> public class MyCompositeFeature extends AbstractFeature {
>    @Override
>    public void initialize(Server server, Bus bus) {
>       AbstractFeature feature = new ServiceCleanupFeature();
>       bus.getFeatures().add(feature);
>       feature.initialize(server, bus);
>    }
> }

Yep, you can do this way
> 
> Thanks,
> Yossi
> 
> 
> This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
> you may review at http://www.amdocs.com/email_disclaimer.asp