You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by 朱宾 <lu...@gmail.com> on 2012/11/01 15:47:43 UTC

How to override the MTOM feature defined in annotation in web service implementation class

Hi,

I'm trying to extend the JAX-WS web service in CXF and want to override the
MTOM feature defined in annotation of the web service implementation class,
but my changes seems didn't take effect. Can you take a look at my steps
and give some suggestions?

I find that in the JaxWsServiceFactoryBean.java in current CXF code, there
are following variables defined for features including MTOM Feature:
    private List<WebServiceFeature> setWsFeatures;
    private List<WebServiceFeature> wsFeatures;
The constructor of JaxWsServiceFactoryBean will invoke
"JaxWsServiceFactoryBean.loadWSFeatureAnnotation()" method to set
"wsFeatures" according to the features defined in annotations.
But the public method "JaxWsServiceFactoryBean.setWsFeatures()" can only
allow me to set the "setWsFeatures".
In JaxWsServiceFactoryBean.create()  method which will retrurn a Sevice
obeject, it will invoke the following methods:
#1 org.apache.cxf.service.Service s = super.create();
#2 setMTOMFeatures(s.getDataBinding());

In #1 step, it will create a Service object using the "setWsFeatures", this
is what I desired since I can set the "setWsFeatures" variable by
"JaxWsServiceFactoryBean.setWsFeatures()" method.
However, In #2 step, it will set the feature in the service according to
"wsFeatures" variable which I can't change from outside.
But I can change the MTOM Feature in the returned Service object by
" JaxWsServiceFactoryBean.create() " method using similar code to "#2
setMTOMFeatures(s.getDataBinding())" using the MTOM feature I defined.

After this changes, I can see that the MTOM feature in Service object is
the one I defined, however, the output of my test case just comes out the
result that The MTOM Feature I defined didn't take effect, but the one in
Annotation is taking effect.

Any ideas on this? Is there anywhere else in CXF will reset the MTOM
feature in Service Object using annotations which I didn't realize? Thanks
in advance.

Re: How to override the MTOM feature defined in annotation in web service implementation class

Posted by Mond Ray <mo...@gmail.com>.
unsubscribe

On 1 November 2012 14:47, 朱宾 <lu...@gmail.com> wrote:

> Hi,
>
> I'm trying to extend the JAX-WS web service in CXF and want to override the
> MTOM feature defined in annotation of the web service implementation class,
> but my changes seems didn't take effect. Can you take a look at my steps
> and give some suggestions?
>
> I find that in the JaxWsServiceFactoryBean.java in current CXF code, there
> are following variables defined for features including MTOM Feature:
>     private List<WebServiceFeature> setWsFeatures;
>     private List<WebServiceFeature> wsFeatures;
> The constructor of JaxWsServiceFactoryBean will invoke
> "JaxWsServiceFactoryBean.loadWSFeatureAnnotation()" method to set
> "wsFeatures" according to the features defined in annotations.
> But the public method "JaxWsServiceFactoryBean.setWsFeatures()" can only
> allow me to set the "setWsFeatures".
> In JaxWsServiceFactoryBean.create()  method which will retrurn a Sevice
> obeject, it will invoke the following methods:
> #1 org.apache.cxf.service.Service s = super.create();
> #2 setMTOMFeatures(s.getDataBinding());
>
> In #1 step, it will create a Service object using the "setWsFeatures", this
> is what I desired since I can set the "setWsFeatures" variable by
> "JaxWsServiceFactoryBean.setWsFeatures()" method.
> However, In #2 step, it will set the feature in the service according to
> "wsFeatures" variable which I can't change from outside.
> But I can change the MTOM Feature in the returned Service object by
> " JaxWsServiceFactoryBean.create() " method using similar code to "#2
> setMTOMFeatures(s.getDataBinding())" using the MTOM feature I defined.
>
> After this changes, I can see that the MTOM feature in Service object is
> the one I defined, however, the output of my test case just comes out the
> result that The MTOM Feature I defined didn't take effect, but the one in
> Annotation is taking effect.
>
> Any ideas on this? Is there anywhere else in CXF will reset the MTOM
> feature in Service Object using annotations which I didn't realize? Thanks
> in advance.
>

How to override the MTOM feature defined in annotation in web service implementation class

Posted by 朱宾 <lu...@gmail.com>.
Hi,

I'm trying to extend the JAX-WS web service in CXF and want to override the
MTOM feature defined in annotation of the web service implementation class,
but my changes seems didn't take effect. Can you take a look at my steps
and give some suggestions?

I find that in the JaxWsServiceFactoryBean.java in current CXF code, there
are following variables defined for features including MTOM Feature:
    private List<WebServiceFeature> setWsFeatures;
    private List<WebServiceFeature> wsFeatures;
The constructor of JaxWsServiceFactoryBean will invoke
"JaxWsServiceFactoryBean.loadWSFeatureAnnotation()" method to set
"wsFeatures" according to the features defined in annotations.
But the public method "JaxWsServiceFactoryBean.setWsFeatures()" can only
allow me to set the "setWsFeatures".
In JaxWsServiceFactoryBean.create()  method which will retrurn a Sevice
obeject, it will invoke the following methods:
#1 org.apache.cxf.service.Service s = super.create();
#2 setMTOMFeatures(s.getDataBinding());

In #1 step, it will create a Service object using the "setWsFeatures", this
is what I desired since I can set the "setWsFeatures" variable by
"JaxWsServiceFactoryBean.setWsFeatures()" method.
However, In #2 step, it will set the feature in the service according to
"wsFeatures" variable which I can't change from outside.
But I can change the MTOM Feature in the returned Service object by
" JaxWsServiceFactoryBean.create() " method using similar code to "#2
setMTOMFeatures(s.getDataBinding())" using the MTOM feature I defined.

After this changes, I can see that the MTOM feature in Service object is
the one I defined, however, the output of my test case just comes out the
result that The MTOM Feature I defined didn't take effect, but the one in
Annotation is taking effect.

Any ideas on this? Is there anywhere else in CXF will reset the MTOM
feature in Service Object using annotations which I didn't realize? Thanks
in advance.