You are correct.
The parts missing are the service messages classes.
But how can I add these manually to my global context?
As far as I understand only CXF knows to read the methods of the service and 
translate them to java / xml classes.


-----Original Message-----
From: Johan Edstrom [mailto:[email protected]] 
Sent: Sunday, April 14, 2013 11:55 PM
To: [email protected]
Subject: Re: Reuse JAXB context in jaxws

You probably haven't instantiated the whole object graph with every single 
ObjectFactory?


On Apr 13, 2013, at 11:12 PM, Avner Levy <[email protected]> wrote:

> Thanks Johan,
> I create my services by code (although it should be equivalent to your 
> configuration file):
> 
>        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
>        factory.setDataBinding(jaxbDataBinding);
>        //register WebService interface
>        factory.setServiceClass(o.getClass());
>        //publish the interface
>        factory.setAddress(URL);
>        factory.setServiceBean(o);
>        //create WebService instance
>        factory.create();*/
> 
> but on Run-Time all the service messages classes are missing from the jaxb 
> context.
> Any idea why?
> 
> -----Original Message-----
> From: Johan Edstrom [mailto:[email protected]] 
> Sent: Saturday, April 13, 2013 11:45 PM
> To: [email protected]
> Subject: Re: Reuse JAXB context in jaxws
> 
> I haven't done it in a while but on older versions you set it like this 
> 
> <jaxws:endpoint id="NotificationProducer"
>                  implementor="#notificationProducerImpl"
>                  address="${wcs.subscribe.httpEndpoint}" 
> wsdlLocation="classpath:NNEW-SubscriptionManagement.wsdl"
>> 
> 
>    <jaxws:properties></jaxws:properties>
> 
>    <jaxws:features>
>      <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"/>
>    </jaxws:features>
> 
>    <jaxws:dataBinding>
>      <ref component-id="jaxb"/>
>    </jaxws:dataBinding>
> 
>    <jaxws:inFaultInterceptors>
>      <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
>    </jaxws:inFaultInterceptors>
> 
>  </jaxws:endpoint>
> 
> Where jaxb is 
> 
> <bean class="aaa.bbb.ccc.jaxbcontext.engine.AAAJaxbContext" id="jaxb">
>    <property name="engineContext" ref="globalContext"/>
>  </bean>
> 
> And that bean extends  JAXBDataBinding
> 
> 
> On Apr 13, 2013, at 9:50 AM, Avner Levy <[email protected]> wrote:
> 
>> Thanks Dan.
>> I've tried the following configuration:
>> http://stackoverflow.com/questions/15989583/how-to-configure-cxf-to-sh
>> are-jaxb-context-between-services But obviously I'm doing something 
>> very wrong.
>> Any help will be greatly appreciated (I'm trying to solve this one for few 
>> months).
>> Thanks in advance,
>> Avner
>> 
>> * I'm working with CXF 2.7.4
>> 
>> -----Original Message-----
>> From: Daniel Kulp [mailto:[email protected]]
>> Sent: Monday, January 28, 2013 9:02 PM
>> To: [email protected]
>> Subject: Re: Reuse JAXB context in jaxws
>> 
>> 
>> On Jan 27, 2013, at 3:37 AM, Avner Levy <[email protected]> wrote:
>> 
>>> In the past I've posted a question about reusing jaxb context between 
>>> services.
>>> Daniel Kulp suggested configure a data binding object in the following form 
>>> (for the specific scenario):
>>> 
>>> <jaxws:endpoint xmlns:tns="urn:ihe:iti:xcpd:2009" .......>
>>>  <jaxws:dataBinding>
>>>      <bean class="org.apache.cxf.jaxb.JAXBDataBinding" >
>>>          <constructor-arg index="0" ref="globalJAXBContextBean"/>
>>>      </bean>
>>>  </jaxws:dataBinding>
>>> 
>>> I've tried to do the same through code:
>>> 
>>> 
>>> jaxwsEndpoint.getProperties().put("org.apache.cxf.jaxb.JAXBDataBinding", 
>>> jaxbDataBinding); before calling:
>>>  jaxwsEndpoint.publish(URL);
>> 
>> The data binding isn't a property in the jaxws:endpoint, otherwise it would 
>> be set in a <jaxws:properties> type element.
>> 
>> To do this, you would need to use the JaxWsServerFactoryBean to create a 
>> server instead of the Endpoint.publish methods.  The server factory has a 
>> setDataBinding method on it that can be used.
>> 
>> Dan
>> 
>> 
>> 
>>> 
>>> And the service starts very fast as if they are reusing the context in the 
>>> jaxbDataBinding object passed.
>>> But when connecting later I've discovered that the service context contains 
>>> only 50 classes while the original contained 700.
>>> Any idea how come I finish with a different context?
>>> Thanks in advance,
>>> Avner
>>> 
>> 
>> --
>> Daniel Kulp
>> [email protected] - http://dankulp.com/blog Talend Community Coder - 
>> http://coders.talend.com
>> 
>> 
>> Email secured by Check Point
> 
> 
> Email secured by Check Point


Email secured by Check Point

Reply via email to