# Client startet viel zu langsam ???



## pocketom (29. Jul 2009)

Wenn ich meinen CXF Client starte dann dauert es erstmal ein paar Sekunden bevor die Anfrage an den Dienst ausgeführt wird. Der Grund ist das Spring jede Menge Logging Messages ausgibt:


```
29.07.2009 15:43:18 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.apache.cxf.bus.spring.BusApplicationContext@15dfd77: display name [org.apache.cxf.bus.spring.BusApplicationContext@15dfd77]; startup date [Wed Jul 29 15:43:18 CEST 2009]; root of context hierarchy
29.07.2009 15:43:18 org.apache.cxf.bus.spring.BusApplicationContext getConfigResources
INFO: No cxf.xml configuration file detected, relying on defaults.
29.07.2009 15:43:18 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
INFO: Overriding bean definition for bean 'org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder': replacing [Root bean: class [org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Root bean: class [org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]]
29.07.2009 15:43:18 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
INFO: Overriding bean definition for bean 'org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder': replacing [Root bean: class [org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Root bean: class [org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]]
29.07.2009 15:43:18 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
INFO: Overriding bean definition for bean 'org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory': replacing [Root bean: class [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; scope=singleton; abstract=false; lazyInit=true; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Root bean: class [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; scope=singleton; abstract=false; lazyInit=true; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/C:/Java/apache-maven-2.1.0/repository/org/apache/cxf/cxf-rt-transports-http/2.1/cxf-rt-transports-http-2.1.jar!/META-INF/cxf/cxf-extension-http.fixml]]
29.07.2009 15:43:18 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.apache.cxf.bus.spring.BusApplicationContext@15dfd77]: org.springframework.beans.factory.support.DefaultListableBeanFactory@a61164
29.07.2009 15:43:18 org.springframework.context.support.AbstractApplicationContext$BeanPostProcessorChecker postProcessAfterInitialization
INFO: Bean 'org.apache.cxf.bus.spring.Jsr250BeanPostProcessor' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
29.07.2009 15:43:18 org.springframework.context.support.AbstractApplicationContext$BeanPostProcessorChecker postProcessAfterInitialization
INFO: Bean 'org.apache.cxf.bus.spring.BusExtensionPostProcessor' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
29.07.2009 15:43:18 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a61164: defining beans [cxf,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.jaxws.context.WebServiceContextResourceResolver,org.apache.cxf.jaxws.context.WebServiceContextImpl,org.apache.cxf.binding.xml.XMLBindingFactory,org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder,org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider,org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder,org.apache.cxf.transport.local.LocalTransportFactory,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory,org.apache.cxf.transport.jms.JMSTransportFactory,org.apache.cxf.management.jmx.InstrumentationManagerImpl]; root of factory hierarchy
29.07.2009 15:43:20 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
INFO: Creating Service {......
.......
```

Wie kann ich das unterdrücken bzw. kann ich die Anfrage von seiten des Clients an dieser Stelle irgendwie beschleunigen?


----------



## mvitz (29. Jul 2009)

klar kannst du das Logging ausschalten, wie genau kommt aber auf das Logging Framework an.

Welches benutzt du?

Log4J, JCL, JUL, Logback, SLF4J ?


----------



## pocketom (30. Jul 2009)

Gute Frage. Ich hab den Code automatisch generiert mit WSDL2Java.

In meiner ServiceImplementation findet sich aber z.B.

import java.util.logging.Logger; 

Dies scheinen mir aber auch nur die Logs vom Server selbst zu sein.



Über den Client selbst scheint es auch nicht zu klappen. Dort wird zwar ein Objeckt vom Typ  der Serviceklasse instanziiert welches selbst wiederum abgeleitet ist von javax.xml.ws.Service, aber ich finde keine Konfigurationsmöglichkeiten. Schon beim instanziieren der Serviceklasse im Client tauchen die Logs auf. Leider finde ich in der Serviceklasse auch keine Hinweise auf den verwendentn Logger, auch im Sourcecode von javax.xml.ws.Service

Es ist wiegesagt Apache CXF mit Spring und läuft auf Tomcat6.x. Kannst du daraus Rückschlüsse auf den Logger ziehen? Ich habe nach diesem Tutorial gearbeitet Web Services with Spring 2.5 and Apache CXF 2.0 - Wheeler Software


----------



## mvitz (30. Jul 2009)

Mit Client meinst du aber schon ein Programm, dass den Webservice aufruft oder meinst du die Serverseite, die den Service anbietet?

Du könntest halt bei den JARs gucken,

ob da commons-logging.jar oder Log4J.jar vorhanden ist.


----------



## pocketom (30. Jul 2009)

commons.logging-1.1.1.jar ist vorhanden


----------



## mvitz (30. Jul 2009)

SimpleLog (Commons Logging 1.1.2-SNAPSHOT API)

-->

simplelog.properties

```
org.apache.commons.logging.simplelog.log.org.springframework=warn
```

Diese Datei muss dann in den Klassenpfad mit aufgenommen werden.


----------

