Thomas Darimont
Erfahrenes Mitglied
Hallo,
hier mal ein kleines Beispiel wie man die transparente Spring Konfiguration via @Configurable
auch mit Spring Dynamic Modules ( http://www.springframework.org/osgi ) bekommen kann.
Wir berichteten:
http://www.tutorials.de/forum/java/...-eclipse-rcp-view-mit-aspectj-und-spring.html
wie in dem gezeigten Beispiel werden wir auch wieder Compile Time Weaving verwenden.
Nach einigem herumspielen mit Spring Dynamic Modules hatte ich wiederholt
(wie viele andere schon vor mir: http://groups.google.com/group/spri...bd07b74ae7/20a4c485f320b9f7?#20a4c485f320b9f7)
mit ClassLoading Problemen zu kämpfen. Jedoch konnte ich diese nach Studium der entsprechenden Docs:
(
http://static.springframework.org/osgi/docs/current/reference/html-single/
http://static.springframework.org/osgi/docs/current/reference/html/spring-osgi-faq.html
) nach einer weile relativ sicher beheben.
Folgende jars/bundles ins Plugin verzeichnis der Eclipse Installation kopieren.
Die "normalen" Spring-jars stammen aus der 2.5.0er Spring Distribution
RCP Mail template anlegen.
Siehe: http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html
IService Interface:
Service Implementierung:
Klasse Navigation view um das Property Service erweitern:
Im Verzeichnis "META-INF" ein Unterverzeichnis namens "spring" anlegen.
Unter "META-INF/spring" dann die ApplicationContext Konfiguration ablegen: "config.xml"
Im Plugin Root ein Verzeichnis "lib" erzeugen.
Dort "spring-aspects.jar" ablegen.
Plugin.xml folgende Abhängigkeiten deklarieren: (In dieser Reihenfolge!)
Anschlie?nd das Projekt als Spring Projekt deklarieren:
Spring Tools -> Add Spring Project Nature
Anschlie?nd das Projekt als AspectJ Projekt deklarieren:
AspectJ Tools -> Convert to AspectJ Project
(Gegebenenfalls in den Project Properties / Java Compiler Optionen das Compiler compliance level auf 5.0 stellen.)
In Project Properties/AspectJ Build unter Aspect Path -> Add jars -> lib/spring-aspects.jar angeben.
Fragement für log4J libs erzeugen welches das commons.logging Bundle als Host-Bundle verwendet.
New -> fragment project -> Name: log4jToJCL -> Host-Bundle / Plugin-ID -> org.apache.commons.logging
Im Fragment Root ein Verzeichnis namens "lib" anlegen. Entsprechendes log4j-xxxx(1.2.14).jar nach lib
kopieren. Anschlie?nd -> im Fragment Manifest.mf -> Runtime -> bei Classpath lib/log4j-xxxx.jar angeben.
Im Fragment Root Log4j Properties erzeugen:
Run Configuration anlegen:
Unter Arguments: -console bei den Programm Arguments am Ende hinzufügen -> damit bekommen wir die OSGi Konsole.
Bei Plugins:
de.tutorials.spring.rcp.mail
und ()
log4jToJCL angeben anschlie?nd auf Add Required Plugi-Ins klicken.
nun sollte alles soweit konfiguriewrt sein, dass man das ganze laufen lassen kann.
Ausgabe sieht bei mir wie folgt aus:
hier mal ein kleines Beispiel wie man die transparente Spring Konfiguration via @Configurable
auch mit Spring Dynamic Modules ( http://www.springframework.org/osgi ) bekommen kann.
Wir berichteten:
http://www.tutorials.de/forum/java/...-eclipse-rcp-view-mit-aspectj-und-spring.html
wie in dem gezeigten Beispiel werden wir auch wieder Compile Time Weaving verwenden.
Nach einigem herumspielen mit Spring Dynamic Modules hatte ich wiederholt
(wie viele andere schon vor mir: http://groups.google.com/group/spri...bd07b74ae7/20a4c485f320b9f7?#20a4c485f320b9f7)
mit ClassLoading Problemen zu kämpfen. Jedoch konnte ich diese nach Studium der entsprechenden Docs:
(
http://static.springframework.org/osgi/docs/current/reference/html-single/
http://static.springframework.org/osgi/docs/current/reference/html/spring-osgi-faq.html
) nach einer weile relativ sicher beheben.
Folgende jars/bundles ins Plugin verzeichnis der Eclipse Installation kopieren.
Code:
24.01.2008 11:31 331.707 org.springframework.osgi.backport.util.concurrent_3.0.0.jar
24.01.2008 11:31 236.182 org.springframework.osgi.bundle.core_1.0.0.rc2_v200712112043.jar
24.01.2008 11:31 61.864 org.springframework.osgi.bundle.extender_1.0.0.rc2_v200712112043.jar
24.01.2008 11:31 13.040 org.springframework.osgi.bundle.io_1.0.0.rc2_v200712112043.jar
19.11.2007 21:40 5.406 spring-agent.jar
19.11.2007 21:40 16.419 spring-aspects.jar
// 19.11.2007 21:40 8.880 spring-tomcat-weaver.jar
19.11.2007 21:39 2.838.649 spring.jar
Die "normalen" Spring-jars stammen aus der 2.5.0er Spring Distribution
RCP Mail template anlegen.
Siehe: http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html
IService Interface:
Java:
/**
*
*/
package de.tutorials.spring.rcp.mail.services;
/**
* @author Thomas.Darimont
*
*/
public interface IService {
}
Service Implementierung:
Java:
/**
*
*/
package de.tutorials.spring.rcp.mail.services.internal;
import de.tutorials.spring.rcp.mail.services.IService;
/**
* @author Thomas.Darimont
*
*/
public class Service implements IService {
}
Klasse Navigation view um das Property Service erweitern:
Java:
...
@Configurable
public class NavigationView extends ViewPart {
public static final String ID = "de.tutorials.spring.rcp.mail.navigationView";
private TreeViewer viewer;
IService service;
public IService getService() {
return service;
}
public void setService(IService service) {
this.service = service;
}
class TreeObject {
...
// damit wir sehen, dass unser Service auch Injected ?ern wir die getChildren(Object parent) Methode des
genestedten ViewContentProviders wie folgt ab:
...
public Object[] getChildren(Object parent) {
System.out.println("###"+getService());
if (parent instanceof TreeParent) {
return ((TreeParent) parent).getChildren();
}
return new Object[0];
}
..
Im Verzeichnis "META-INF" ein Unterverzeichnis namens "spring" anlegen.
Unter "META-INF/spring" dann die ApplicationContext Konfiguration ablegen: "config.xml"
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<aop:spring-configured/>
<bean id="service" class="de.tutorials.spring.rcp.mail.services.internal.Service"/>
<bean class="de.tutorials.spring.rcp.mail.NavigationView">
<property name="service" ref="service"/>
</bean>
</beans>
Im Plugin Root ein Verzeichnis "lib" erzeugen.
Dort "spring-aspects.jar" ablegen.
Plugin.xml folgende Abhängigkeiten deklarieren: (In dieser Reihenfolge!)
Code:
org.eclipse.ui
org.eclipse.core.runtime
org.apache.commons.logging
org.springframework.osgi.bundle.extender
org.springframework.bundle.spring
Anschlie?nd das Projekt als Spring Projekt deklarieren:
Spring Tools -> Add Spring Project Nature
Anschlie?nd das Projekt als AspectJ Projekt deklarieren:
AspectJ Tools -> Convert to AspectJ Project
(Gegebenenfalls in den Project Properties / Java Compiler Optionen das Compiler compliance level auf 5.0 stellen.)
In Project Properties/AspectJ Build unter Aspect Path -> Add jars -> lib/spring-aspects.jar angeben.
Fragement für log4J libs erzeugen welches das commons.logging Bundle als Host-Bundle verwendet.
New -> fragment project -> Name: log4jToJCL -> Host-Bundle / Plugin-ID -> org.apache.commons.logging
Im Fragment Root ein Verzeichnis namens "lib" anlegen. Entsprechendes log4j-xxxx(1.2.14).jar nach lib
kopieren. Anschlie?nd -> im Fragment Manifest.mf -> Runtime -> bei Classpath lib/log4j-xxxx.jar angeben.
Im Fragment Root Log4j Properties erzeugen:
Code:
log4j.rootLogger=TRACE, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
Run Configuration anlegen:
Unter Arguments: -console bei den Programm Arguments am Ende hinzufügen -> damit bekommen wir die OSGi Konsole.
Bei Plugins:
de.tutorials.spring.rcp.mail
und ()
log4jToJCL angeben anschlie?nd auf Add Required Plugi-Ins klicken.
nun sollte alles soweit konfiguriewrt sein, dass man das ganze laufen lassen kann.
Ausgabe sieht bei mir wie folgt aus:
Code:
osgi> 2008-02-04 17:52:14,952 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:14,952 INFO [org.springframework.osgi.extender.internal.ContextLoaderListener] - Starting org.springframework.osgi.extender bundle v.[1.0.0.rc2_v200712112043]
2008-02-04 17:52:14,968 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,031 DEBUG [org.springframework.osgi.extender.internal.support.NamespaceManager] - Adding namespace handler resolver for spring (org.springframework.bundle.spring)
2008-02-04 17:52:15,031 DEBUG [org.springframework.osgi.extender.internal.support.NamespacePlugins] - adding as handler spring (org.springframework.bundle.spring)
2008-02-04 17:52:15,046 DEBUG [org.springframework.osgi.extender.internal.support.NamespaceManager] - Adding namespace handler resolver for spring-osgi-core (org.springframework.osgi.bundle.core)
2008-02-04 17:52:15,046 DEBUG [org.springframework.osgi.extender.internal.support.NamespacePlugins] - adding as handler spring-osgi-core (org.springframework.osgi.bundle.core)
2008-02-04 17:52:15,046 DEBUG [org.springframework.osgi.extender.internal.support.NamespaceManager] - Registering Spring NamespaceHandlerResolver and EntityResolver...
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.osgi]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.osgi]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.equinox.common]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.equinox.common]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.core.runtime]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.core.runtime]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.core.jobs]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.core.jobs]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.core.runtime.compatibility.auth]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.core.runtime.compatibility.auth]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.equinox.app]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.equinox.app]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.equinox.preferences]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.equinox.preferences]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.equinox.registry]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,062 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.equinox.registry]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.springframework.osgi.bundle.extender]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.springframework.osgi.bundle.extender]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [LAZY_ACTIVATION] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [LAZY_ACTIVATION] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.ui.workbench]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.ui.workbench]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.jface]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.jface]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.jface]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.jface]
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.jface]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,077 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.jface]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.ui]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTING] for bundle [org.eclipse.ui]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.ui]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.ui]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.ui]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.ui]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.ui.workbench]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [org.eclipse.ui.workbench]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=org.eclipse.ui.workbench]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=org.eclipse.ui.workbench]isSpringBundle=false|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,124 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Processing bundle event [STARTED] for bundle [de.tutorials.spring.rcp.mail]
2008-02-04 17:52:15,140 DEBUG [org.springframework.osgi.extender.internal.support.ApplicationContextConfiguration] - configuration: AppCtxCfg [Bundle=de.tutorials.spring.rcp.mail]isSpringBundle=true|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,140 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - created config AppCtxCfg [Bundle=de.tutorials.spring.rcp.mail]isSpringBundle=true|async=true|wait-for-deps=true|publishCtx=true|timeout=300s
2008-02-04 17:52:15,156 INFO [org.springframework.osgi.extender.internal.ContextLoaderListener] - disabled automatic Spring-DM annotation processing; [ org.springframework.osgi.extender.annotation.auto.processing=null]
2008-02-04 17:52:15,156 DEBUG [org.springframework.osgi.extender.internal.ContextLoaderListener] - Asynchronous context creation for bundle Mail Plug-in (de.tutorials.spring.rcp.mail; singleton:=true)
2008-02-04 17:52:15,187 DEBUG [org.springframework.osgi.extender.internal.util.concurrent.Counter] - counter [contextsStarted] incremented to 1
2008-02-04 17:52:15,202 DEBUG [org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor] - starting first stage of refresh for OsgiBundleXmlApplicationContext(bundle=de.tutorials.spring.rcp.mail, config=osgibundlejar:/META-INF/spring/*.xml)
2008-02-04 17:52:15,202 DEBUG [org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor] - calling preRefresh on OsgiBundleXmlApplicationContext(bundle=de.tutorials.spring.rcp.mail, config=osgibundlejar:/META-INF/spring/*.xml)
2008-02-04 17:52:15,202 INFO [org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext] - Refreshing org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext@b9b538: display name [OsgiBundleXmlApplicationContext(bundle=de.tutorials.spring.rcp.mail, config=osgibundlejar:/META-INF/spring/*.xml)]; startup date [Mon Feb 04 17:52:15 CET 2008]; root of context hierarchy
2008-02-04 17:52:15,234 DEBUG [org.springframework.osgi.util.BundleDelegatingClassLoader] - looking for resource commons-logging.properties
2008-02-04 17:52:15,234 DEBUG [org.springframework.osgi.util.BundleDelegatingClassLoader] - looking for resource META-INF/services/org.apache.commons.logging.LogFactory
2008-02-04 17:52:15,234 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,234 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,234 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,234 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,234 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,249 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
2008-02-04 17:52:15,281 DEBUG [org.springframework.core.CollectionFactory] - Creating [java.util.concurrent.ConcurrentHashMap]
Anhänge
Zuletzt bearbeitet von einem Moderator: