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 >
