Spring 2.5/ JPA (Hibernate) und mehrere PersistenceUnits

85 views
Skip to first unread message

Korbinian Bachl

unread,
Jan 24, 2008, 6:49:45 PM1/24/08
to Spring User Group Germany
Hallo,

ich bin relativ neu mit Spring und habe vorher eher EJB3 in Verbindung
mit JPA genutzt. Nun hab ich folgende Frage/ Problem:

Wie bekomme ich n-PUs (hier 2) in Spring hin?

ich bin vorgegangen wie unter http://static.springframework.org/spring/docs/2.5.x/reference/orm.html#orm-jpa
angegebn und habe in meiner application-context folgendes drinnen:

--zip---
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
>

<bean id="persistenceUnitManager"
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath:/META-INF/persistence.xml</value>
</list>
</property>
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager"
ref="persistenceUnitManager"/>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven />

<context:component-scan base-package="de.xxx"/>
<context:annotation-config />
-------

und in der persistence.xml steht:

-----
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/
persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="puB" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>xxx</class>
viele weitere class's
<properties>
<property name="default" value="true" />
<property name="hibernate.connection.url" value="xxx"/>
<property name="hibernate.connection.driver_class"
value="org.postgresql.Driver"/>
<property name="hibernate.connection.password" value="xxx"/>
<property name="hibernate.connection.username" value="xxx"/>
<property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.cache.provider_class"
value="org.hibernate.cache.NoCacheProvider"/>
</properties>
</persistence-unit>


<persistence-unit name="puB" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>xxx</class>
... viele weitere class's
<properties>
<property name="default" value="false" />
<property name="hibernate.connection.url" value="xxx"/>
<property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="xxx"/>
<property name="hibernate.connection.username" value="xxx"/>
<property name="hibernate.cache.provider_class"
value="org.hibernate.cache.NoCacheProvider"/>
</properties>
</persistence-unit>
</persistence>
----

wenn ich das nun starte kommt immer: "ERROR
org.springframework.web.context.ContextLoader - Context initialization
failed
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'persistenceUnitManager' defined in
ServletContext resource...."

"Caused by: java.lang.IllegalStateException: No single default
persistence unit defined in {classpath:/META-INF/persistence.xml}"

aber ich habe doch die default exakt korrekt definiert! - steht unter
<property name="default" value="false" /> (1x true) in jeder PU
drinnen. Wenn ich das ding mit EJB3 laufen lasse, klappt es auch - nur
mit Spring weigert er sich. Warum?

grüße,

Korbinian

Oliver Gierke

unread,
Jan 25, 2008, 3:21:31 AM1/25/08
to Spring User Group Germany
http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa-multiple-pu

Gruß
Ollie

On 25 Jan., 00:49, Korbinian Bachl <korbinian.ba...@googlemail.com>
wrote:
> Hallo,
>
> ich bin relativ neu mit Spring und habe vorher eher EJB3 in Verbindung
> mit JPA genutzt. Nun hab ich folgende Frage/ Problem:
>
> Wie bekomme ich n-PUs (hier 2) in Spring hin?
>
> ich bin vorgegangen wie unterhttp://static.springframework.org/spring/docs/2.5.x/reference/orm.htm...
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

Korbinian Bachl

unread,
Jan 25, 2008, 5:45:43 AM1/25/08
to Spring User Group Germany
Hallo Ollie,

danke für den link, nur so mach ich es ja bereits. Ich habe lediglich
den part mit den DataSources weggelassen weil ich ja mehrere
PersistenceUnits habe und nicht mehrere DataSouces direkt bedienen
möchte... aber egal:

ich habe jetzt folgendes in den PUM reingetan:

<property>
<map>
<entry key="localDataSource" value-ref="puA"/>
<entry key="remoteDataSource" value-ref="puB"/>
</map>
</property>
<!-- if no datasource is specified, use this one -->
<property name="defaultDataSource" ref="remoteDataSource"/>

dann meckert er "Line 60 in XML document from ServletContext resource
[/WEB-INF/applicationContext.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: cvc-complex-type.4: Attribute 'name'
must appear on element 'property'."

und nenn ich das din dann halt einfach name="dataSources" bzw.
name="dataSource" meckert er:
"org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'persistenceUnitManager' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot
resolve reference to bean 'puA' while setting bean property
'dataSource' with key [TypedStringValue: value [localDataSource],
target type [null]]; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
bean named 'puA' is defined"

ich bin jetzt also auch nicht weiter - kannst du mir bitte dabei
helfen?

grüße


Korbinian

On 25 Jan., 09:21, Oliver Gierke <oliver.gie...@once-media.de> wrote:
> http://static.springframework.org/spring/docs/2.0.x/reference/orm.htm...
> > xsi:schemaLocation="http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/pers...">

Korbinian Bachl

unread,
Jan 25, 2008, 5:09:23 AM1/25/08
to Spring User Group Germany
Hallo Ollie,

danke für deine Antwort - aber so wie es unter den von dir gezeigten
DOCs steht bin ich ja vorgegangen (BTW: die 2.0 doc hat sogar n fehler
da die property-map ohne name spezifiziert ist, wurde in den 2.5er
docs gefixt), nur das ich den part mit den DataSources ausgelassen
hab, weil ich ihn ehrlich gesagt nicht ganz versteh - ich wll ja nicht
2 datasources sondern 2 PersistenceUnits verwenden... und wenn ich bei
mir die 2 datasources einfüge und die ref's auf meine PU namen setze
meckert er das er die nicht finden kann?

Kannst du mir das bitte erklären?

grüße,
> > xsi:schemaLocation="http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/pers...">

Oliver Gierke

unread,
Jan 25, 2008, 6:09:59 AM1/25/08
to Spring User Group Germany
Du hast wahrscheinlich einfach keine da. Wie soll er die dann auch
finden? =)

Ich vermute du wirst einfach zwei
LocalContainerEntityManagerFactoryBeans definieren müssen. Auf denen
kannst du explizit die PersistenceUnit festlegen
(setPersistenceUnitName). Wenn deine persistence.xml an der richtigen
Stelle liegt (META_INF/persistence.xml) dann brauchst du die
PersistenceUnitManager gar nicht mehr deklarieren.

Der Abschnitt in der SPringdoku bezieht sich wohl eher auf das
verwenden mehrerer persistence.xml Files, nicht so sehr auf das
verwenden mehrerer PersistenceUnits innerhalb eines Files. Sollte man
vielleicht deutlicher manchen.

Gruß
Ollie



On 25 Jan., 11:09, Korbinian Bachl <korbinian.ba...@googlemail.com>
wrote:

Korbinian Bachl

unread,
Jan 25, 2008, 6:43:21 AM1/25/08
to Spring User Group Germany
Hallo Ollie,

also ich hab das jetzt so getan wie du gesgat hast, pum raus, 2
entityManagerFactorys rein - dann will er noch n transactionManager
haben, flux den hin dann hab ich sowas:

<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
>

<bean id="entityManagerFactoryMY"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="puA"/>
</bean>

<bean id="entityManagerFactoryPG"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="puB"/>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactoryMY"/>
<property name="entityManagerFactory"
ref="entityManagerFactoryPG"/>
</bean>

aber jetzt meckert er rum "ERROR
org.springframework.web.context.ContextLoader - Context initialization
failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unexpected failure during bean definition
parsing
Offending resource: ServletContext resource [/WEB-INF/
applicationContext.xml]
Bean 'transactionManager'; nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Multiple 'property' definitions for property
'entityManagerFactory'
Offending resource: ServletContext resource [/WEB-INF/
applicationContext.xml]
Bean 'transactionManager'
-> Property 'entityManagerFactory'"

ich weiß echt nicht mehr weiter, und die spring-doku als auch
Eberhardt Wolff's Buch helfen mir 0 weiter... ich sehen mich schon
nach EJB3 zurück.. da definierst die dinger einfach in der
persistence.xml und den rest macht "er" selber... bei Spring hingegen
bist irgendwie in nem XML-config-war :(

hat denn hier keiner ein lauffähiges beispiel parat wie man 2 PUs in
einer persistence.xml ansprechen kann?

Oliver Gierke

unread,
Jan 25, 2008, 8:08:21 AM1/25/08
to Spring User Group Germany
Ich kann deine Frustration leider nur teilweise nachvollziehen ;) Ich
mein, die Exception ist ziemlich eindeutig und es sollte eigentlich
auch klar sein, dass der Container ins Stocken gerät, wenn du
versuchst ihm unter einem Namen zwei verschiedene Referenzen
unterzuschieben.

Einfach die erste EMF in den ersten TM, die zweite in den zweiten.

Scheint, als hättest du dir die Arbeitsweise des COntainers noch nicht
angeschaut, wie beans konfiguriert werden usw. Das ist eigentlich kein
Hexenwerk (property namen mappen auf Setter der bean Klasse, value
Attribute für primitive Typen, ref für Objekte), aber halt notwendig
um nicht von einem Konfigurationsfehler in den nächsten zu rennen.

Wenn du das Buch vom Eberhard da hast, nimm dir mal das Kapitel zur
Dependecy Injection und der gundlegenden Konfiguration des Containers
vor. Dann wird so Zeug erheblöich einfacher vermute ich.

Gruß
Ollie

Du brauchst folglicherweise auch zwei Transaktionsmanager



On 25 Jan., 12:43, Korbinian Bachl <korbinian.ba...@googlemail.com>

Korbinian Bachl

unread,
Jan 25, 2008, 8:35:00 AM1/25/08
to Spring User Group Germany
Hi Ollie,

danke das du dich mit mir geduldest. Also, ich habe jetzt das ganze
dupliziert, nur eines verstehe ich nicht ganz:

der <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
> erwarter eine Bean alias "transactionManager" - aber ich habe ja 2 -
wie kann ich dem denn beide transactionManger verklickern? eine
property name="transactionManager" nimmt er nicht an, da er keine
setter/getter hat... wie kann ich spring dazu bewegen das ich hiervon
2 verschiedene hab?

die Arbeitsweise vom Container hab ich mir nochmal angeschaut und es
ist auch zum teil klar, aber an dieser PU sache häng ich einfach...

wenn ich übrigens den <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
> komplett weg lasse funktioniert es zwar zum starten, aber ich
bekommen immer einen "Hibernate Session closed" error wenn ich den
EntityManager nutzen will - aber das session-handling ist doch sache
des containers?

mit verwirrten grüßen,

Korbinian

Korbinian Bachl

unread,
Jan 26, 2008, 6:58:12 AM1/26/08
to Spring User Group Germany
So, ich hab jetzt mein Problem zum teil lösen können.

1.: wenn man mit mehr als einer PersistenceUnit arbeiten möchte muss
man unbedingt den JTATransactionManager nehmen.
(wäre toll wenn sowas auch in der Springdoku bei dem kapitel JPA
stehen würde und nicht nur beim JTA selber...)

Beispielconfig wäre dann so:

----
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
>

<bean id="entityManagerFactoryMY"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="puMY"/>
</bean>

<bean id="entityManagerFactoryPG"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="puPG"/>
</bean>
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
</bean>


<tx:annotation-driven />
---

Somit läuft es wie es soll - zumindest in Glassfish; in Tomcat 6.0
meckert er rum das er "Caused by: java.lang.IllegalStateException: No
JTA UserTransaction available - specify either 'userTransaction' or
'userTransactionName' or 'transactionManager' or
'transactionManagerName'"

Ich vermute das Tomcat 6.0 von sich selber aus keine default JTA
userTransaction anbietet - kann das sein? Jemand mit Erfahrung hierzu?

2. das Problem mit der Hibernate-Session closed: scheinbar
interessieren Spring 2.5 nur EntityManager-aufrufe wenn die jeweilige
funktion ein @Transactional verpasst bekommen hat, also das hier geht
nicht:

---
@PersistenceContext(unitName="myPU")
private EntityManager em;

public List getSthForMe() {
return emmy.createQuery("select c from Class
c").getResultList();
}
---

aber das hier schon:

---
@PersistenceContext(unitName="myPU")
private EntityManager em;

@Transactional
public List getSthForMe() {
return emmy.createQuery("select c from Class
c").getResultList();
}
---

Warum Spring hier so zickig ist, versteh ich jedoch noch nicht. Sollte
jemand näheres zu den Gründen wissen wäre ich dankbar für ein paar
infos hierzu.

grüße

Korbinian

Eberhard Wolff

unread,
Jan 26, 2008, 8:28:17 AM1/26/08
to su...@googlegroups.com
Hi,

Worauf Du hier gerade stößt ist Two Phase Commit zum Koordinieren von
Transaktionen über mehrere Datenbanken. Führt natürlich zu der Frage, ob
Du überhaupt mehrere Datenbanken hast. Und außerdem hat das auch einen
Performance-Overhead, d.h. ich würde es *dringend* vermeiden.

Die allererste Lösung war eigentlich ganz gut, es fehlte allerdings der
persistenceUnitName der Default Persistence Unit:


<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/
>

<bean id="persistenceUnitManager"


class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath:/META-INF/persistence.xml</value>
</list>
</property>
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager"
ref="persistenceUnitManager"/>


---> Hier ist die Änderung <----

<property name="persistenceUnitName" value="puB" />

</bean>

<bean id="transactionManager"


class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven />

<context:component-scan base-package="de.xxx"/>
<context:annotation-config />

HTH,

Eberhard

--
Eberhard Wolff
Service Delivery Director
SpringSource (Interface21 GmbH)
Sitz der Gesellschaft: Brentanostr. 52a - D-12163 Berlin
Geschäftsführer: Steven Schuurman, Rod Johnson
Amtsgericht Charlottenburg - HRB 103773 B

http://www.springsource.com

Author, "Spring 2 - Framework für die Java Entwicklung"
http://www.spring-buch.de/

Founding Member Java Champions
https://java-champions.dev.java.net/

Mail: eberhar...@springsource.com
Skype: ebr.wolff
Blog: http://JandIandMe.blogspot.com/
Mailing List: http://www.springsource.com/news-de

Korbinian Bachl

unread,
Jan 26, 2008, 11:46:58 AM1/26/08
to Spring User Group Germany
Hallo Eberhard,

dank für deine Nachricht.

Leider habe ich 2 Datenbanken (1x MySQL-legacy, 1x PostgreSQL-neu) :)

deinen Ansatz mit dem PUM werd ich mal probieren, dann war ich also
doch näher dran als gedacht. Nur, nutzt du jetzt wieder die
jpa.JpaTransactionManager - ich dachte sobald mehrere PUs beteiligt
sind muss man auf JTA setzen??? - ich finde die spring-doku dazu etwas
verwirrend, gelinde gesagt. Wäre toll wenn du in einer Neuauflage
deines Buches solche fälle kurz erwähnen könntest.

Grüße

Korbinian

PS: dein Buch war bisher ne große Hilfe - was mir etwas gefehlt hat
war ein Kapitel indem es primär um den Idealaufbau einer SpringWebApp
geht - also wie man das ganze am besten "ordnet", ob man Interfaces
nutzen sollte oder nicht (man hat ja im Gegensatz zu EJB die Wahl) -
quasi so n Ideal Spring-Blueprint mit Erklärungen; ach ja, als
WebFramework solltest du noch Wicket dazu nehmen - das passt super mit
Spring zusammen und unterstützt es auch ganz gut

On 26 Jan., 14:28, Eberhard Wolff <eberhard.wo...@springsource.com>
wrote:
> Mail: eberhard.wo...@springsource.com

Eberhard Wolff

unread,
Jan 27, 2008, 1:45:27 PM1/27/08
to su...@googlegroups.com
Hi,

Korbinian Bachl wrote:
> deinen Ansatz mit dem PUM werd ich mal probieren, dann war ich also
> doch näher dran als gedacht. Nur, nutzt du jetzt wieder die
> jpa.JpaTransactionManager - ich dachte sobald mehrere PUs beteiligt
> sind muss man auf JTA setzen??? - ich finde die spring-doku dazu etwas
> verwirrend, gelinde gesagt.

Das ist kein Spring-Thema, sondern eine Frage des Aufbaus der Anwendung.
Wenn man Transaktionen über mehrere Datenquellen will, muss man halt JTA
haben, ob mit oder ohne Spring.

> PS: dein Buch war bisher ne große Hilfe

Danke!

> - was mir etwas gefehlt hat
> war ein Kapitel indem es primär um den Idealaufbau einer SpringWebApp
> geht - also wie man das ganze am besten "ordnet", ob man Interfaces
> nutzen sollte oder nicht (man hat ja im Gegensatz zu EJB die Wahl) -

Nun ja, das ist eine allgemeine Frage. Der Aufbau einer Anwendung und
auch die Programmierung gegen Interfaces sind allgemeine Fragen, die
unabhängig von Spring sind. Interfaces erlauben einen einfacheren
Austausch der Implementierung und einfacheres Testen. Die Aufteilung in
Packages ist ebenfalls eine Frage der Architektur - dazu sollte es
andere Literatur geben.

> quasi so n Ideal Spring-Blueprint mit Erklärungen;

Helfen die Samples für das Buch da weiter?

> ach ja, als
> WebFramework solltest du noch Wicket dazu nehmen - das passt super mit
> Spring zusammen und unterstützt es auch ganz gut

Wicket hat sicher einige Aufmerksamkeit, aber ich habe das Gefühl,
Struts, JSF und Spring MVC ist das, was die meisten tatsächlich nutzen.
Leider muss man bei der Menge an Frameworks, die Spring unterstützt
irgendwo Einschnitte machen. Danke auf jeden Fall für das Feedback!

Gruß,

Eberhard

--
Eberhard Wolff
Service Delivery Director
SpringSource (Interface21 GmbH)
Sitz der Gesellschaft: Brentanostr. 52a - D-12163 Berlin
Geschäftsführer: Steven Schuurman, Rod Johnson
Amtsgericht Charlottenburg - HRB 103773 B

http://www.springsource.com

Author, "Spring 2 - Framework für die Java Entwicklung"
http://www.spring-buch.de/

Founding Member Java Champions
https://java-champions.dev.java.net/

Mail: eberhar...@springsource.com

Korbinian Bachl

unread,
Jan 28, 2008, 1:11:01 PM1/28/08
to Spring User Group Germany
Hallo Eberhard,

On 27 Jan., 19:45, Eberhard Wolff <eberhard.wo...@springsource.com>
wrote:
> Hi,
>
> Korbinian Bachl wrote:
> > deinen Ansatz mit dem PUM werd ich mal probieren, dann war ich also
> > doch näher dran als gedacht. Nur, nutzt du jetzt wieder die
> > jpa.JpaTransactionManager - ich dachte sobald mehrere PUs beteiligt
> > sind muss man auf JTA setzen??? - ich finde die spring-doku dazu etwas
> > verwirrend, gelinde gesagt.
>
> Das ist kein Spring-Thema, sondern eine Frage des Aufbaus der Anwendung.
> Wenn man Transaktionen über mehrere Datenquellen will, muss man halt JTA
> haben, ob mit oder ohne Spring.

Naja, es ist für mich so, das ich bei Spring mehr Freiheiten wie bei
EJB (3) sehe und daher man gerade als Neuling an einigen Fragen
verzweifeln kann. Insbesondere die Springdoku in Bezug zur Einbindung
von JPA in Spring finde ich ein zu wenig und bei EJB z.B. stellt sich
die Frage ob oder ob nicht JTA garnicht, da das ja als quasi-standard
so vorgesehen ist. Ich hab mich bisher also noch nie so richtig um den
TransactionManager gekümmert, er war halt da und hat funktioniert -
welcher genau.. nun ja, das überlässt man im Regelfall den
Serverherstellern was die da dann implementieren.

>
> > PS: dein Buch war bisher ne große Hilfe
>
> Danke!
>
> > - was mir etwas gefehlt hat
> > war ein Kapitel indem es primär um den Idealaufbau einer SpringWebApp
> > geht - also wie man das ganze am besten "ordnet", ob man Interfaces
> > nutzen sollte oder nicht (man hat ja im Gegensatz zu EJB die Wahl) -
>
> Nun ja, das ist eine allgemeine Frage. Der Aufbau einer Anwendung und
> auch die Programmierung gegen Interfaces sind allgemeine Fragen, die
> unabhängig von Spring sind. Interfaces erlauben einen einfacheren
> Austausch der Implementierung und einfacheres Testen. Die Aufteilung in
> Packages ist ebenfalls eine Frage der Architektur - dazu sollte es
> andere Literatur geben.

Nun ja, ich finde z.B.: "EJB 3 in Action" hier sehr gut dazu gelungen
(http://www.manning.com/panda/excerpt_contents.html -> Kapitel 11+12
als Beispiel) - denn nur weil eine Technologie genutzt wird heißt es
ja noch lange nicht das sie gut und effektiv genutzt wird. Da helfen
so kleine BestPractices und Idealstrukturen oftmals sehr viel.

>
> > quasi so n Ideal Spring-Blueprint mit Erklärungen;
>
> Helfen die Samples für das Buch da weiter?

Ich werd Sie mir nochmals vertiefend ansehen, da ich Wicket verwende
habe ich bisher primär das Wicket-Phonebookexample betrachtet (das
Zeigt eine CRUD mit Wicket als WebView + Spring als Logic &
Persistence).

>
> > ach ja, als
> > WebFramework solltest du noch Wicket dazu nehmen - das passt super mit
> > Spring zusammen und unterstützt es auch ganz gut
>
> Wicket hat sicher einige Aufmerksamkeit, aber ich habe das Gefühl,
> Struts, JSF und Spring MVC ist das, was die meisten tatsächlich nutzen.
> Leider muss man bei der Menge an Frameworks, die Spring unterstützt
> irgendwo Einschnitte machen. Danke auf jeden Fall für das Feedback!

Das mit den Einschnitten ist klar, wollte nur auf die Existenz
hinweisen. Und von wegen "nutzen" und guter Frameworks - IMHO ist es
so das die meisten Leute sich nicht aussuchen können was Sie nutzen
müssen/ sollen und oftmals verschiedene Sichtweisen existieren.

grüße

Korbinian

>
> Gruß,
>
> Eberhard
>
> --
> Eberhard Wolff
> Service Delivery Director
> SpringSource (Interface21 GmbH)
> Sitz der Gesellschaft: Brentanostr. 52a - D-12163 Berlin
> Geschäftsführer: Steven Schuurman, Rod Johnson
> Amtsgericht Charlottenburg - HRB 103773 B
>
> http://www.springsource.com
>
> Author, "Spring 2 - Framework für die Java Entwicklung"http://www.spring-buch.de/
>
> Founding Member Java Championshttps://java-champions.dev.java.net/
>
> Mail: eberhard.wo...@springsource.com
Reply all
Reply to author
Forward
0 new messages