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.TransactionPaymentEventType
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