It's much faster with the fastBoot property.  Down to about 7 seconds now,
from 15.  About 2 seconds to create the service and 5 to get the port.  I
think I can live with this.  Thanks

On Wed, Nov 16, 2011 at 12:54 PM, Daniel Kulp <[email protected]> wrote:

>
> There is a system property:
>
> System.setProperty(JAXBContextImpl.class.getName()+".fastBoot", "true")
>
> that you can set that tells JAXB not to optimize these things.  Runtime
> performance would be a little bit worse though.
>
> Other than that, I'm not sure what to suggest.
>
> Dan
>
>
> On Wednesday, November 16, 2011 11:45:01 AM Andrew wrote:
> > I configured Java logging here's what I'm seeing:
> >
> > The first three seconds:
> >
> >   573 Nov 16, 2011 11:23:34 AM com.sun.xml.bind.v2.ContextFactory
> > createContext
> >   574 FINE: Property com.sun.xml.bind.XmlAccessorFactoryis not active.
> > Using JAXB's implementation
> >
> > Then, I'm seeing about 10 seconds (~37K lines) of this:
> >
> >  1166 FINE: Using optimized Accessor for protected
> > com.netsuite.webservices.platform.core_2011_1.RecordRef
> > com.netsuite.webservices.transactions.bank_2011_1.CheckItem.units
> >  1167 Nov 16, 2011 11:23:37 AM
> > com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory get
> >  1168 FINE: Using optimized Accessor for protected java.lang.String
> > com.netsuite.webservices.transactions.bank_2011_1.CheckItem.description
> >
> > and more
> >
> > 34792 FINE: Using optimized Accessor for protected java.lang.Integer
> >
> com.netsuite.webservices.platform.messages_2011_1.SearchPreferences.pageSize
> > 34793 Nov 16, 2011 11:23:45 AM
> > com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory get
> > 34794 FINE: Using optimized Accessor for protected java.lang.String
> > com.netsuite.webservices.platform.messages_2011_1.PartnerInfo.partnerId
> > 34795 Nov 16, 2011 11:23:45 AM
> > com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory get
> > 34796 FINE: Using optimized Accessor for protected java.lang.String
> > com.netsuite.webservices.platform.messages_2011_1.PartnerInfo.partnerId
> >
> > So it appears to be doing an inordinate amount of reflection.  Is it
> > possible to suppress this?
> >
> > On Tue, Nov 15, 2011 at 1:46 PM, Daniel Kulp <[email protected]> wrote:
> > > Well, there are a couple parts to this.   There aren't timestamps
> > > between
> > > the
> > >
> > > logs:
> > > > 2535 [main] INFO
> > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean -
> > > > Creating
> > > > Service
> > > > {urn:platform_2011_1.webservices.netsuite.com}NetSuiteService
> > >
> > > from
> > >
> > > > WSDL: file:/netsuite/WSDL_v2011_1_0/netsuite.wsdl
> > > > 14002 [main] DEBUG org.apache.cxf.jaxb.JAXBDataBinding - Created
> > > > JAXBContext
> > >
> > > to really figure out what is happening there.  :-(    It could be in
> the
> > > WSDL
> > > loading/processing or the JAXBContext creation or Annotation processing
> > > or, well, a bunch of things.   Not really sure.   If you run with a
> > > newer version
> > > of CXF, does it show anything else?
> > >
> > > Also, use plain java.util.logging and turn on FINEST level logging and
> > > see if
> > > anything else pops up.    CXF and JAXB both use java.util.logging by
> > > default
> > > and it may print out extra information.
> > >
> > > Dan
> > >
> > > On Tuesday, November 15, 2011 12:58:36 PM Andrew wrote:
> > > > It's taking around 15 seconds to initialize a client to a third
> > > > party web service.  I generated the soap classes with the wsdl2java
> > > > converter, with> >
> > > > cxf 2.2.1.  Here's the code:
> > > >         URL url = new
> > > >         URL("file:/WSDL_v2011_1_0/netsuite.wsdl");
> > > >         NetSuiteService ss = new NetSuiteService(url);
> > > >         NetSuitePortType port = ss.getNetSuitePort();
> > > >
> > > > I've tried different versions of CXF but I get the same performance.
> > > >
> > > > Here's the log output.  There are around 1000 classes generated.. I
> > >
> > > removed
> > >
> > > > all but a few for readability.
> > > >
> > > > 2226 [main] DEBUG org.apache.cxf.jaxws.ServiceImpl - creating port
> > > > for
> > > > portName
> > > > 2227 [main] DEBUG org.apache.cxf.jaxws.ServiceImpl - endpoint
> > > > reference: 2227 [main] DEBUG org.apache.cxf.jaxws.ServiceImpl -
> > > > endpoint interface: 2535 [main] INFO
> > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean -
> > > > Creating
> > > > Service
> > > > {urn:platform_2011_1.webservices.netsuite.com}NetSuiteService
> > >
> > > from
> > >
> > > > WSDL: file:/netsuite/WSDL_v2011_1_0/netsuite.wsdl
> > > > 14002 [main] DEBUG org.apache.cxf.jaxb.JAXBDataBinding - Created
> > > > JAXBContext
> > >
> > >
> "jar:file:/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.13/jaxb-impl-2.
> > > 1.13>
> > > > .jar!/com/sun/xml/bind/v2/runtime/JAXBContextImpl.class Build-Id:
> > > > 2.1.13> >
> > > > Classes known to this context:
> > > >   [B
> > > >   boolean
> > > >   byte
> > > >   char
> > > >   com.netsuite.webservices.activities.scheduling_2011_1.CalendarEv
> > > >   ent
> > > >
> > > > ... 1000 more classes
> > >
> > >
> com.netsuite.webservices.transactions.sales_2011_1.types.TransactionPaym
> > > entE>
> > > > ventType com.sun.xml.bind.api.CompositeStructure
> > > >
> > > >   double
> > > >   float
> > > >   int
> > > >   java.awt.Image
> > > >   java.io.File
> > > >   java.lang.Boolean
> > > >   java.lang.Byte
> > > >   java.lang.Character
> > > >   java.lang.Class
> > > >   java.lang.Double
> > > >   java.lang.Float
> > > >   java.lang.Integer
> > > >   java.lang.Long
> > > >   java.lang.Object
> > > >   java.lang.Short
> > > >   java.lang.String
> > > >   java.lang.Void
> > > >   java.math.BigDecimal
> > > >   java.math.BigInteger
> > > >   java.net.URI
> > > >   java.net.URL
> > > >   java.util.Calendar
> > > >   java.util.Date
> > > >   java.util.GregorianCalendar
> > > >   java.util.UUID
> > > >   javax.activation.DataHandler
> > > >   javax.xml.bind.JAXBElement
> > > >   javax.xml.datatype.Duration
> > > >   javax.xml.datatype.XMLGregorianCalendar
> > > >   javax.xml.namespace.QName
> > > >   javax.xml.transform.Source
> > > >   long
> > > >   short
> > > >   void
> > > >
> > > > " with classes [class
> > > > com.netsuite.webservices.platform.messages_2011_1.SsoLoginRequest,
> > > > ...
> > > > class com.netsuite.webservices.lists.support_2011_1.ObjectFactory].
> > > > 14203 [main] DEBUG
> > > > org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -
> > > > building
> > > > handler chain
> > > > 14204 [main] DEBUG
> > > > org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -
> > > > Checking for HandlerChain annotation on
> > > > com.netsuite.webservices.platform_2011_1.NetSuiteService
> > > > 14206 [main] DEBUG
> > > > org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -
> > > > Checking for HandlerChain annotation on javax.xml.ws.Service
> > > > 14206 [main] DEBUG
> > > > org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -
> > > > Checking for HandlerChain annotation on java.lang.Object
> > > > 14206 [main] DEBUG
> > > > org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder - no
> > > > HandlerChain annotation on class
> > > > com.netsuite.webservices.platform_2011_1.NetSuiteService
> > > > 14207 [main] DEBUG org.apache.cxf.jaxws.ServiceImpl - created proxy
> > > >
> > > > Is there any way to speed this up?  I only need a few of the ~1000
> > >
> > > classes
> > >
> > > > but didn't want to modify the WSDL if possible since I don't own it.
> > > > Thanks,
> > > >
> > > > Andrew
> > >
> > > --
> > > Daniel Kulp
> > > [email protected]
> > > http://dankulp.com/blog
> > > Talend - http://www.talend.com
> --
> Daniel Kulp
> [email protected]
> http://dankulp.com/blog
> Talend - http://www.talend.com
>

Reply via email to