# Grundüberlegung Java Webprojekt



## deh3nne (24. Jul 2011)

Hallo Community,

Ich habe bereits eine prototypische Umsetzung eines Projektes in PHP vorgenommen, welches sich bei meinem ersten Kunden auch im Einsatz befindet.
Nun hatte ich von Anfang an vor das ganze konzeptuell in PHP zu starten und dann die Anwendung nach erfolgreichem Prototypen in eine Java Serveranwendung zu überführen.
Das Projekt wird wohl immer wieder Änderungen erfahren und erweitert werden.

Folgende Komponenten habe ich bisher vor zu nutzen:

Entwicklungsumgebung

Eclipse Indigo 3.7
 Tomcat 7

Frameworks:

Hibernate
 Spring
 GWT oder jQuery
 log4j

Nun ein paar konkrete Kernfragen:

Bezüglich der Technologie bin ich noch unsicher. Setze ich auf JSF2.0 mit JSTL1.2 oder arbeite ich mich in das mir noch unbekannte Wicket ein? Gibt es weitere alternativen? Deckt Wicket den selben Umfang wie JSF ab? 

Setze ich ein Build Tool ein? Ich habe mich dieses Wochenende viel mit Maven 3 beschäftigt. Jedoch konnte mich das Build Tool nicht so recht überzeugen, was vllt daran liegt das ich noch nie in der Situation war den Zweck eines solchen in der Praxis zu erfahren. Das Hauptproblem welches ich mit einem Build Tool habe ist die Integration in Eclipse (bei Maven trotz m2e) und dem ausführen mittels Tomcat. Ist es vllt das Problem das ich mich dabei zu sehr auf Tomcat versteife und Jetti (Maven integriert) als Alternative in Erwägung ziehen sollte?
Kann jmnd den Vorteil auf den Punkt bringen den mir ein Tool wie Maven bringt?

Ich habe zwar noch mehr Fragen aber belasse es erstmal dabei ;D

Vielen dank,
deh3nne


----------



## TheDarkRose (24. Jul 2011)

Also Maven 3 ist toll. Bringt dir den Vorteil, das du auch auserhalb von Eclipse deine .ear/.war/.jar (EJB) files erzeugen kannst, und das du auch keine Eclipse spezifischen Sachen in ein SCM einchecken musst. Weiteres lässt es sich dann auf jeden Rechner der Maven installiert hat, aber kein Eclipse auch bauen.

Ja, die m2eclipse Integration selbst mit WTP ist schrott. Installier dir aus den JBoss Tools die komplette Kategorie "Maven Support" (m2eclipse brauchst du natürlich trotzdem). Wenn du dann ein Maven Project/Modul erzeugst, such dir einen passenden Archetype aus (entweder ear-javaee6, ekb-javaee6 oder webapp-javaee6). Nach der Erzeugung sollte dein Workspace dann ein richtiges JavaEE Project mit den entsprechenden Eclipse Faceten angezeigt werden. Falls du noch zusätzliche Projektfaceten aktivieren willst gibt es da auch was für Maven: Maven Eclipse plugin - Additional Facets


----------



## deh3nne (24. Jul 2011)

Trotz einigen rumprobierens die letzten stunden habe ich immer noch große Probleme ein Eclipse Projekt mit Maven zum laufen zu bringen:
- Man kann nur entweder die JBoss Tools oder m2e installieren eclipse lässt es nicht anders zu
- mit jboss tools kann ich zwar das projekt aufsetzen und bis auf ein 'plugin execution not covered' auch starten und die index.jsp ausführen, aber wenn ich die MyFaces und jstl Dependencies einfüge und dann ein einfaches Beispiel laufen lassen will, bringt tomcat den Fehler:  
	
	
	
	





```
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
```

Ich habe auch ein Tutorial Projekt (Maven based) importiert (mit Sun JSF), es gibt keine Fehler etc. aber Tomcat bringt immer einen 404 egal wie man es anstellt.

Ich hoffe es kann mir jmnd helfen... :rtfm:

Edit: habe das Tut nochmal mit frischen Eclipse und m2e probiert, aber da gabs gleich noch mehr Probleme als mit den JBoss Tools.

Wenn das so weitergeht dann werden Maven und ich wohl nie Freunde...  ueh:


----------



## TheDarkRose (25. Jul 2011)

Kann nicht nachvollziehen was du machst. m2eclipse aus der Indigo Update SEite und nicht von der von Sonatype installieren.


----------



## Gelöschtes Mitglied 5909 (25. Jul 2011)

schau mal in der catalina.out nach was schief ging.
Entweder rufst du die falsche url auf oder beim start der anwendung geht was schief.
Das auf maven zu schieben ist schlichtweg falsch.

btw. schonmal was von continuous integration gehört? so wie es aussieht hast du bisher nur eclipse verwendet,
da kannst dann aber erstmal du entwickeln oder ein anderer entwickler muss erstmal stundelang rumpfuschen bis er das zum laufen bringt.

Aus meiner sicht musst du ein build tool verwenden, welches ist dir überlassen. (und nein eclipse ist kein build-tool)

Außerdem sieht es für mich aus als würdest du alles in ein projekt reinmachen. Je nachdem wie groß das projekt ist /wird,
wirst du später ein riesen Monolith haben und jeder andere Programmiere wird sich freuen.
Deshalb verwendet man auch build tools, um module bauen zu können und die abhängigen libraries automatisch aufzulösen.
Solltest du dich für ANT entscheiden ist IVY aus meiner sicht auch pflicht.


----------



## deh3nne (25. Jul 2011)

> Kann nicht nachvollziehen was du machst. m2eclipse aus der Indigo Update SEite und nicht von der von Sonatype installieren.



Ich habe es geschafft die beiden Plugins zu installieren. Das generierte Projekt (webapp-javaee6) schaut soweit auch ganz gut aus und lässt sich per tomcat starten. In der pom.xml von Maven wird jedoch folgender Fehler angezeigt:

```
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (execution: default, phase: validate)
```
Diesen einfach per 
	
	
	
	





```
permanently mark goal copy in pom.xml as ignored in eclipse build
```
 beseitigen oder ist das eine größere Sache?



> btw. schonmal was von continuous integration gehört?
> ...
> Aus meiner sicht musst du ein build tool verwenden, welches ist dir überlassen. (und nein eclipse ist kein build-tool)



gutes Stichwort, welches ich als Grundlage meines Projektes betrachten möchte
Das ich ein Build Tool verwenden sollte bzw muss, ist mir klar. Maven scheint die bisher beste Lösung zu sein. Gradle scheint mir nach einigen Tests noch zu 'unterentwickelt' und hat wenig Support mittels Foren, Plugins, etc. Und Ant(mit Ivy) wird im Gegensatz zu Maven oftmals verteufelt.

Sollte ich Maven extern von Eclipse laufen lassen, also mittels Konsole mit Maven arbeiten?



> Außerdem sieht es für mich aus als würdest du alles in ein projekt reinmachen.



Eine Aufteilung von Projektbestanteilen habe ich auch schon in Erwägung gezogen. Ich denke an eine Persitenzschicht, eine Logik(Buisness-)schicht und Webschicht.

Vorher möchte ich mich jedoche noch tiefergehend mit Maven beschäftigen da ich auf diesem Feld keine Erfahrung besitze und mich auf meine Kerntechnologie festlegen (JSF oder Wicket).

Vielen Dank, 
deh3nne


----------



## TheDarkRose (25. Jul 2011)

Einfach 
	
	
	
	





```
permanently mark goal copy in pom.xml as ignored in eclipse build
```
 ausführen. Ist eigentlich nur eine Sache die dann Eclipse betrifft.


----------



## deh3nne (25. Jul 2011)

Update: Ich werde als Technologie Wicket einsetzen.

Mal sehen wie sich Wicket mit Eclipse, Maven und Tomcat schlägt...

Hat diesbezüglich jmnd Erfahrungen?


----------



## OnkelWanja (26. Jul 2011)

Ja, hatte schon diese 4 Sachen in einem Projekt verwendet. Das Zusammenspiel funktioniert gut und Wicket ist einfach nur ein cooles Framework :toll:


----------



## deh3nne (29. Jul 2011)

Mal wieder eine Meldung. Die Einarbeitung in Maven, Eclipse, Tomcat, Wicket (+Hibernate, +Spring) läuft gut.

Ich habe noch eine Frage zu folgendem:


> Außerdem sieht es für mich aus als würdest du alles in ein projekt reinmachen.



Ich habe mir zwar gedacht, das dies toll ist, jedoch fehlt mir der Ansatz wie ich ein Projekt un Module aufteile.

Ich stelle es mir sehr umständlich vor, z.B. die Geschäftslogik, die Persistenz und die UI in getrennten Projekten zu entwickeln und in einem Core Projekt zusammenfließen zu lassen.

Wie stellt man sich das vor? Was ist dort der beste Weg dies umzusetzen?

Vielen Dank
deh3nne


----------



## nillehammer (29. Jul 2011)

> Ich stelle es mir sehr umständlich vor, z.B. die Geschäftslogik, die Persistenz und die UI in getrennten Projekten zu entwickeln und in einem Core Projekt zusammenfließen zu lassen.
> Wie stellt man sich das vor? Was ist dort der beste Weg dies umzusetzen?


Anders wird ein Schuh draus. Du entwickelst ein Core-Projekt mit Geschäftslogik, Persistenz, also allem, was völlig unhabhängig von der Darstellung ist. Parallel oder danach entwickelst Du die Gui, die die Funktionen des Core-Projekts nutzt. Von der Ordner-Struktur her, habe ich gerne einen Hauptordner fürs Gesamtprojekt und darunter dann die Unterordner für die Module. Bei Maven wären das dan z.B. drei Unterordner project-core (die Core Klassen), project-web (das Webprojekt) und project-main (ziemlich leer, dort ist nur die Main-Pom drinnen). Alle drei Unterordner sind in Eclipse ein eigenes Projekt. Das geht aber nur, wenn Du den Haupordner außerhalb des Default-Workspace anglegst. Sonst beschwert Eclipse sich. Mit dieser Aufteilung und einer sauberen main-POM und mvn eclipse:eclipse kannst Du entwickeln, als wäre alles in einem einzigen Projekt.

Gruß nillehammer


----------

