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 2014/02/10 13:54:27 UTC
RE: Autowire CXF Bus
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