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.CalendarEvent > > ... 1000 more classes > > > > > com.netsuite.webservices.transactions.sales_2011_1.types.TransactionPaymentE > > 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 >
