You need to extend that class, initialize a jaxb context (statically) and in 
the ctor
Provide an array of all the object factories 

On Apr 15, 2013, at 0:14, Avner Levy <[email protected]> wrote:

> 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