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
