Uploaded image for project: 'JBoss Web Services'
  1. JBoss Web Services
  2. JBWS-1857

JAXBContext created for every wrapper type

XMLWordPrintable

      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.

        1. jbossws-src-1.2.1.GA-jaxb-context.patch
          2 kB
          Johann Gyger
        2. jprobe_service_get_port.txt
          415 kB
          Johann Gyger
        3. StammdatenService.wsdl
          47 kB
          Johann Gyger

              ropalka Richard Opalka
              jogy_jira Johann Gyger (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: