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
