]
Johann Gyger updated JBWS-1857:
-------------------------------
Attachment: jprobe_service_get_port.txt
JProbe analysis of service.getPort()
Never create the same JAXBContext more than once
------------------------------------------------
Key: JBWS-1857
URL:
http://jira.jboss.com/jira/browse/JBWS-1857
Project: JBoss Web Services
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: jbossws-jaxws
Affects Versions: jbossws-1.2.1
Reporter: Johann Gyger
Attachments: jprobe_service_get_port.txt
service.getPort() may become an expensive operation (i.e., several seconds) when using a
non-trivial WSDL with complex types. We have been able to track down our performance
problems to an incorrect usage of JAXB-RI in JBOSS-JAXWS. According to
https://wsit.dev.java.net/servlets/ReadMsg?list=dev&msgNo=66, creating new instances
of JAXBContext is an expensive operation.
In our WSDL we counted 28 instance creations of JAXBContext. Most of them are created
through the following call hierarchy:
JAXBContext.newInstance(Class[], Map<String,?>) line: 570
JAXBContext.newInstance(Class...) line: 522
JAXBAccessor$1.create(Class) line: 67
JAXBAccessor$1.create(ParameterMetaData) line: 54
ParameterMetaData.eagerInitialize() line: 470
OperationMetaData.eagerInitialize(List<Method>) line: 469
ClientEndpointMetaData(EndpointMetaData).eagerInitializeOperations() line: 516
ClientEndpointMetaData(EndpointMetaData).initializeInternal() line: 502
ClientEndpointMetaData(EndpointMetaData).eagerInitialize() line: 490
JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(EndpointMetaData, Class<?>)
line: 292
ServiceDelegateImpl.getPortInternal(EndpointMetaData, Class<T>) line: 274
ServiceDelegateImpl.getPort(QName, Class<T>) line: 200
A JProbe analysis (see attached file) revealed that actually most of the time (96.4%) of
service.getPort() is spent in JAXBContext.newInstance(). Please see attached JProbe
report.
Compared to JAX-WS RI (Metro) the performance of service.getPort() is extremely bad.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: