[jbossws-issues] [JBoss JIRA] Reopened: (JBWS-1857) JAXBContext created for every wrapper type

Richard Opalka (JIRA) jira-events at lists.jboss.org
Tue May 20 06:20:59 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBWS-1857?page=all ]

Richard Opalka reopened JBWS-1857:
----------------------------------

      Assignee:     (was: Thomas Diesler)
             
JAXB context cache isn't properly scoped.
The JAXB context cache should be e.g. property of jaxws service
and not thread property as it is now.

> JAXBContext created for every wrapper type
> ------------------------------------------
>
>                 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-native
>    Affects Versions: jbossws-1.2.1, jbossws-2.0.1
>            Reporter: Johann Gyger
>         Attachments: jbossws-src-1.2.1.GA-jaxb-context.patch, jprobe_service_get_port.txt, StammdatenService.wsdl
>
>
> 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: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbossws-issues mailing list