Application Server

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

was würdet ihr für einen Application Server verwenden bei einer freien Auswahl?
Ich benötige eine Datenbankanbindung, hab eine Geschäftslogik und die Darstellungsschicht sollte noch offen gelassen werden, z.B.: soll die Darstellungsschicht mit JSP, HTML, AJAX realisiert werden können, es sollte aber auch möglich sein, einen eigenen Client (z.B.: Rich Client mit Eclipse) zu schreiben und mit diesem auf Daten des Applikationsserver zuzugreifen.
Wäre Euch dankbar für eine Empfehlung, funktioniert das alles mit Tomcat oder brauch ich die Referenzimplementierung Glassfish dazu?)

lg
 
M

maki

Gast
Wenn ich die Wahl hätte würde das mit der OSGi Version von TC (kostenpflichtig) machen :)
 

MQue

Top Contributor
Wenn ich die Wahl hätte würde das mit der OSGi Version von TC (kostenpflichtig) machen :)

das Problem ist, ich hab mit OSGi noch nichts gemacht, ich weiß nur, dass es in Eclipse verwendet wird um die Plugins (Bundles) einzuhängen, komme aber aus der NetBeans- Ecke, da wirds mit Modulen und den Lookups realisiert (eine Analogie ist aber nicht abzustreiten)

Weißt Du vielleicht, ob es mit Tomcat möglich ist, mit einem Client (Plain Old Java Desktop Application) direkt auf die Geschäftslogik des Tomcat zuzugreifen ohne die Präsentationsschicht zu verwenden.

Mir ist momentan nur die "normale" Möglichkeit bekannt, mit einem Browser über die Präsentatiosschicht (ein Servlet (doGet, doPost)) auf den Server bzw. die Dienste des Servers zuzugreifen,

Wäre Dir sehr dankbar für Tipps in diese Richtung,
lg
 

byte

Top Contributor
Weißt Du vielleicht, ob es mit Tomcat möglich ist, mit einem Client (Plain Old Java Desktop Application) direkt auf die Geschäftslogik des Tomcat zuzugreifen ohne die Präsentationsschicht zu verwenden.

Das geht mit dem Spring Framework sehr komfortabel. Du legst ein "Servlet Projekt" an, dort implementierst Du Deine Services (Schnittstelle zwischen Client und Server) als POJOs. Die Services könnten über DAOs mit einer DB kommunizieren.

Diese Services kannst Du dann über einfache Servlets verfügbar machen. Das funktioniert so, dass du ein DispatcherServlet in der web.xml definierst, dass alle Aufrufe an die entsprechenden Service-Objekte delegiert. Das konfigurierst Du dann entsprechend mit Spring.

Seitens des Rich Clients kannst Du dann mit Hilfe von Apache HttpClient mit dem Server kommunizieren. Das lässt sich mit ein paar Zeilen Code konfigurieren (siehe Spring HTTPInvoker).


Es ist ohne weiteres möglich, parallel dazu einen Webclient zu schreiben, wo mit Hilfe der o.g. Services z.B. JSPs oder dergleichen generiert werden.
 
M

maki

Gast
Weißt Du vielleicht, ob es mit Tomcat möglich ist, mit einem Client (Plain Old Java Desktop Application) direkt auf die Geschäftslogik des Tomcat zuzugreifen ohne die Präsentationsschicht zu verwenden.
Klar, machen auch viele, tfa hatte mal was erwähnt, denke es war mit Spring Remoting, RMI etc. gehen natürlich auch, mittlerweile geht das sogar mit EJBs (OpenEJB).
 

MQue

Top Contributor
Vielen Dank, dann stürz ich mich mal rein, eine Frage stellt sich jetzt noch, ob mich dabei der Tomcat 6.0 Unterstützt (bei Spring, RMI, Datenbankanbindung, EJB)?
lg
 

Noctarius

Top Contributor
Ich würde auch einen Tomcat mit Spring nutzen. Auf der Basis läuft ein relativ großes, älteres System mit größerem Zugriffsvolumen.

Wenn du allerdings etwas Zeit aufbringen magst und dich z.B. eh in Spring einarbeiten möchtest wäre es vllt doch nicht falsch direkt nach ServiceMix oder SpringDM (die zwei OSGi Server mit Spring Unterstützung) zu schauen, da auch bei Tomcat überlegt wird eventuell demnächst nach OSGi zu schauen :D
 

MQue

Top Contributor
Ich würde auch einen Tomcat mit Spring nutzen. Auf der Basis läuft ein relativ großes, älteres System mit größerem Zugriffsvolumen.
:D

Aber Tomcat macht's nicht mit EJB? oder täusch ich mich da, würde die EJB nicht sofort programmieren aber wenn in weiterer Folge Erweiterungen bei der Businesslogik anstehen, wäre es sehr hilfreich, modulare Komponenten zu der Applikation dazuzu- deployen,
 
M

maki

Gast
Mit OpenEJB kann man auhc in Tomcat EJBs haben, die Frage ist: Willst du EJBs, oder willst du OSGi?

Am flexibelsten bleibst du aber mit POJOs & SPring imho, geht beides auch auf einem AppServer.
 

e9926044

Bekanntes Mitglied
Mit OpenEJB kann man auhc in Tomcat EJBs haben, die Frage ist: Willst du EJBs, oder willst du OSGi?

Am flexibelsten bleibst du aber mit POJOs & SPring imho, geht beides auch auf einem AppServer.

Wisst ihr vielleicht ein (gutes) Tutorial, um mit Spring so schnell wie möglich produktiv zu werden?
Dankeschön,
lg
 
M

maki

Gast
Die Spring Doku ist sehr gut imho, allerdings musst du schon wissen wohin die Reise gehen soll, den Spring ist ein ganzes Ökosystem, nicht nur ein Framework.

Was genau interessiert dich denn, e9926044?
 

MQue

Top Contributor
Hallo nochmal,

wenn ich jetzt Spring und OSGi verwende, wird das wahrscheinlich nur mit Eclipse gehen, da ja Netbean weit und breit nicht mit OSGi umgehen kann, oder täusch ich mich da?

lg
 

byte

Top Contributor
Equinox ist die OSGi Implementierung von Eclipse und wird afaik auch von Spring Dynamic Modules verwendet. KA obs überhaupt noch ne andere OSGi Implementierung gibt, die weit verbreitet ist.
Inwiefern Netbeans Equinox unterstützt, kann ich nicht sagen. Ich denke mal, um Eclipse wirst Du nicht drum herum kommen, wenn Du Equinox benutzen willst. Ist aber ja nicht so wild. Interessanter ist die Frage, welche Server Plattform Du verwenden willst, die OSGi-fähig ist!?
Der Spring DM Server steht unter GPL.
 

Noctarius

Top Contributor
Equinox ist die OSGi Implementierung von Eclipse und wird afaik auch von Spring Dynamic Modules verwendet. KA obs überhaupt noch ne andere OSGi Implementierung gibt, die weit verbreitet ist.
Inwiefern Netbeans Equinox unterstützt, kann ich nicht sagen. Ich denke mal, um Eclipse wirst Du nicht drum herum kommen, wenn Du Equinox benutzen willst. Ist aber ja nicht so wild. Interessanter ist die Frage, welche Server Plattform Du verwenden willst, die OSGi-fähig ist!?
Der Spring DM Server steht unter GPL.

Apache Felix im ServiceMix und vielen anderen Projekten
 

MQue

Top Contributor
Apache Felix im ServiceMix und vielen anderen Projekten


Ok, vielen Dank erst mal, ich fasse mal zusammen, mal schaun ob ich das richtig verstanden habe,
Ich programmiere mit Eclipse auf einen Apache Felix (Server?) im ServiceMix, welcher Equinox (also OSGi) verwendet.
Kann man das so sagen?

Was wäre da dann der Unterschied zu einer Glassfish- Implementierung, welchen ich mit EJB bestücke bzw. einen Einsatz von Spring?

Ich versuche gerade mir einen Weg durch den Framework- Jungle zu suchen und das Beste (für mich) herauszubekommen bzgl der schnellen Erlernbarkeit (hab bis jetzt vorwiegend mit NetBeans gearbeitet).
Wäre Euch sehr dankbar für Tipps,

lg
 
Zuletzt bearbeitet:

byte

Top Contributor
Das Thema OSGi ist imo recht komplex, vor allem wenn man eine Integration mit anderen Frameworks haben will. Es gibt immer wieder mehr oder weniger fiese Pitfalls, grade wenn man Libraries oder Frameworks in den OSGi Container integriert. Erst letztens saß ich wieder an einem Problem mit AspectJ, dass sich am Ende auf ein ClassLoader Problem mit nem Bundle zurückführen lies.
Wir benutzen OSGi nur auf dem Richclient und nicht auf dem Server. Dort benutzen wir einfach Tomcat + Spring + Hibernate und fahren sehr gut damit.
 
Zuletzt bearbeitet:

MQue

Top Contributor
Das Thema OSGi ist imo recht komplex, vor allem wenn man eine Integration mit anderen Frameworks haben will.
Wir benutzen OSGi nur auf dem Richclient und nicht auf dem Server. Dort benutzen wir einfach Tomcat + Spring + Hibernate und fahren sehr gut damit.


Tomcat + Spring + Hibernate kommt mir mittlerweile auch schon sehr Sympatisch vor, mit Hibernate hab ich schon gearbeitet (dürfte kein Problem sein), Tomcat ist mir auch sehr gut bekannt (meine ganzen EE - Projekte hab ich mit Eclipse und Tomcat realisiert -> einfache Servlets, JSP und HTML), die einzige Unbekannte für mich ist Spring,
wird also wahrscheinlich in diese Richtung gehen, ich hoffe ich bereues es nicht, die Verantwortlichen haben mir da freie Hand bei der Auswahl gegeben, wollen aber wahrscheinlich so schnell wie möglich Resultate sehen, das werden aufregende Wochen,

lg
 

byte

Top Contributor
tfa hat in einem seiner Blogs hier im Board ein kleines Spring Tutorial. Das kannst Du Dir ja mal angucken. Ansonsten ist die Spring Doku sehr gut (wenn auch umfangreich). Es gibt aber auch haufenweise Tutorials im Netz und das Spring Forum ist auch sehr gut besucht. Lohnen tut sich das allemal. Du wirst die Java Welt danach mit anderen Augen sehen. ;)
 

Noctarius

Top Contributor
Ok, vielen Dank erst mal, ich fasse mal zusammen, mal schaun ob ich das richtig verstanden habe,
Ich programmiere mit Eclipse auf einen Apache Felix (Server?) im ServiceMix, welcher Equinox (also OSGi) verwendet.
Kann man das so sagen?

Ganz einfach: Nein :D

Es gibt mehrere OSGi Implementierungen der Frameworkspezifikation, die bekanntesten sind eben Apache Felix, Eclipse Equinox und Knopflerfish. ServiceMix, Spring DM Server, JBoss und Andere Server benutzen solch eine OSGI Implementierung als Basis um darauf OSGi-Bundles (ne spezielle Art von JAR-Files) auszuführen und damit Services, Klassen, Funktionen, usw anzubieten.

Eclipse selber ist eine RCP (Rich Client Platform) welche als Grundlage OSGi verwendet. Eclipse selber baut dabei auf Equinox auf. ServiceMix andererseits z.B. baut auf Apache Felix auf.

Der Vorteil an der OSGi Spezifikation (wenn man sich an die Grundlagen hält und keine Equinox-Erweiterungen nutzt) ist, dass ein OSGi-Bundle welches auf Equinox läuft auch auf Felix oder Knopflerfish funktioniert.

Damit kannst du mit Eclipse sehr einfach Bundles entwickeln und dann auf einem externen Server benutzen.

Für mich hat sich folgende Kombination als am einfachsten herausgestellt (für Webanwendungen und -plugins):
Eclipse -> Maven (Eclipse Plugin) -> Archetype Spring-OSGi-Bundle -> ServiceMix mit Spring DynamicModules Unterstützung

Hier mögen die Meinungen aber auseinander gehen. Ich finde Spring hat eine tolle OSGi Extention (wenn auch manchmal etwas fehlt, ist halt erst Version 1.0.2) und ist generell sehr gut dokumentiert und verständlich. Abgesehen davon gibt es zu Spring genug Bücher und für mich immer noch der größte Vorteil: Ich arbeite hauptsächlich mit POJOs und DI :)
 
M

maki

Gast
Sehe das so wie Noctarius, mit SpringDM wird das ganze sehr einfach (und Intergrationstests zB. auch ;)), da reicht auch ein nacktes Equinox mit den entsprechenden Bundles um die App laufen zu lassen, es muss kein SpringDM Server sein.
Soweit ich weiss, ist Equinox bisher die umfassendste OSGi Implementierung.
 

Noctarius

Top Contributor
Apache Felix bietet auch vollen OSGI Spec :D Nur die vielen zusätzlichen Möglichkeiten von Equinox fehlen, die man der Portabilität wegen, nicht umbedingt einsetzen sollte. Außer man baut definitiv für Eclipse :D

edit: Hier noch eine sehr schöne Grundlagenerklärung zu OSGi: OSGi ? Wikipedia
 
Zuletzt bearbeitet:
M

maki

Gast
Was ist mit Fragements unter Felix?
Vor 6 Monaten wurden diese noch nicht unterstützt ;)
 

Noctarius

Top Contributor
Müssten entweder schon gehen oder mit dem nächsten Release kommen. Hatte zumind. neulich noch was darüber gelesen dass daran gearbeitet wurde. Ich persönlich hab sie noch nicht eingesetzt, daher weiß ich es nicht genau :D
 
M

maki

Gast
Sehr nützlich, zB. für die Logging konfig. oder auch Internationaliserung.
 

MQue

Top Contributor
OK, ich hab mir das Spring angesehen (kurz überflogen und ein paar kleine Referenzimplementierungen gemacht) und bin überzeugt von diesem Teil,

Meine Frage wäre jetzt, wie kann ich das Spring- Framework in meiner Tomcat- Implementierung verwenden? Muss ich da einfach nur die jars in mein JavaEE- Projekt kopieren und dann funkts. oder muss ich dem Tomcat da auch noch was sagen?

Vielen Dank,
lg
 

Noctarius

Top Contributor
Ich bin Verfechter der Doppelstrategie @Autowire Annotation und dann by-interface-type binden lassen (zumind. da wo es Sinn macht, weil man nur eine Instanz haben mag), Rest per XML DI :D
 

byte

Top Contributor
OK, ich hab mir das Spring angesehen (kurz überflogen und ein paar kleine Referenzimplementierungen gemacht) und bin überzeugt von diesem Teil,

Meine Frage wäre jetzt, wie kann ich das Spring- Framework in meiner Tomcat- Implementierung verwenden? Muss ich da einfach nur die jars in mein JavaEE- Projekt kopieren und dann funkts. oder muss ich dem Tomcat da auch noch was sagen?

Vielen Dank,
lg

Einfach die Jars ins WEB-INF/lib Verzeichnis. Du musst dann halt sehen, dass Du einen WebApplicationContext konfigurierst, der einmal aufgebaut wird, wenn die Webanwendung gestartet wird.
 

MQue

Top Contributor
Hallo nochmal,

hab noch ne blöde frage zu Spring, soweit klappt alles sehr gut, ich brauche jetzt noch eine Datenbankanbindung (am besten mit iBatis oder Hibernate),
in Spring sind ja jetzt schon ein paar jars dabei wie z.B.:

org.springframework.jdbc-3.0.0.M3.jar
org.springframework.jdbc-sources-3.0.0.M3.jar
org.springframework.orm-3.0.0.M3.jar
org.springframework.orm-sources-3.0.0.M3.jar

das hat aber jetzt noch nichts mit iBatis oder Hibernate zu tun, oder?
die jars muss ich wahrscheinlich separat einbinden, ich frage mich jetzt nur, was Spring zu meiner Datenbankanbindung beitragen kann???

vielen Dank,
lg
 

byte

Top Contributor
Hallo nochmal,

hab noch ne blöde frage zu Spring, soweit klappt alles sehr gut, ich brauche jetzt noch eine Datenbankanbindung (am besten mit iBatis oder Hibernate),
in Spring sind ja jetzt schon ein paar jars dabei wie z.B.:

org.springframework.jdbc-3.0.0.M3.jar
org.springframework.jdbc-sources-3.0.0.M3.jar
org.springframework.orm-3.0.0.M3.jar
org.springframework.orm-sources-3.0.0.M3.jar

das hat aber jetzt noch nichts mit iBatis oder Hibernate zu tun, oder?
die jars muss ich wahrscheinlich separat einbinden, ich frage mich jetzt nur, was Spring zu meiner Datenbankanbindung beitragen kann???

vielen Dank,
lg

Spring bietet Dir deklaratives Transaktions-Handling. Du kannst eine Transaktionsklammer um eine Methode legen, z.B. durch einfaches annotieren mit @Transactional (alternativ auch per XML). Ausserdem hat Spring eine eigene Exception Hierarchie (siehe DataAccessException). Exceptions aus dem ORM können auf diese Exceptions gemappt werden, was z.B. im Falle von Hibernate definitiv sehr sinnvoll ist, denn Hibernate Exceptions sind nicht selten sehr nichtssagend. Die DataAccessExceptions hingegen sind idR sehr aufschlussreich.

In älteren Hibernate Versionen hat Spring noch mehr abgenommen. Früher konnte Hibernate die Session noch nicht selbstständig an die Transaktion binden. Das hatte Spring dann übernommen (Stichwort HibernateTemplate). Seit Hibernate 3.2 kann Hibernate das aber selbst, deshalb kann man direkt mit der Hibernate Session arbeiten, statt den Umweg übers HibernateTemplate zu gehen.
 

MQue

Top Contributor

MQue

Top Contributor
Morgen,

hätte noch eine Frage zu Spring, ich habe momentan 5 Anbindungen (also 5 Klassen ohne darüberliegendes Interface) von externen Geräten (Steuerungen) an mein Programm (Seriell, TCP, DDE, Modbus, OPC).
Ich brauche aber nicht für jeden Kunden alle 5 sondern nur z.B.: TCP (werd ich am öftesten benötigen),
Ich habs momentan (ohne Spring sondern eine ganz normale Java- Applikation) so realisiert, das ich in einer Konfig- Datei einfach reinschreib, welche Verbindung ich benötige (z.B.: tcp) und erzeuge mir dann eben ein Objekt dieser Klasse, den anderen Code für die serielle, DDE, Modbus, OPC - Schnittstelle brauche ich z.B.: für diese konkrete Anwendung nicht, dieser Code ist in meiner jetzigen Realisierung aber auch dabei -> also toter Code :)

kann ich es mit Spring irgendwie lösen, das ich meine Anwendung starte und dann die Module, die ich brauche wie z.B.: TCP, irgendwie in meine Applikation hineinwerfe?
Ist das möglich oder wie könnte ich es elegant realisieren, dass in einer Applkation nur der Code drinnen ist, der wirklich benötigt wird?

lg
 
Zuletzt bearbeitet:

Noctarius

Top Contributor
Eine Propertiesdatei benutzen, die Module da eintragen und ob sie aktiviert werden sollen oder nicht und dann mit Dependency Injection die "Instanzen" der Module in deine Anwendung injecten lassen.
 

MQue

Top Contributor
Eine Propertiesdatei benutzen, die Module da eintragen und ob sie aktiviert werden sollen oder nicht und dann mit Dependency Injection die "Instanzen" der Module in deine Anwendung injecten lassen.

Das heißt aber auch, dass der Code in meiner Anwendung drinnen bleiben muss auch von den Schnittstellen, die ich nicht benötige, oder ? Gebe es in diese Richtung vielleicht auch eine Möglichkeit, wie ich gemeint habe, einfach Komponenten ins Programm werfen?

Vielen Dank,
lg
 
M

maki

Gast
Das heißt aber auch, dass der Code in meiner Anwendung drinnen bleiben muss auch von den Schnittstellen, die ich nicht benötige, oder ? Gebe es in diese Richtung vielleicht auch eine Möglichkeit, wie ich gemeint habe, einfach Komponenten ins Programm werfen?
Sagt dir der Begriff "Application Context" schon etwas? ;)
Du definierst doch deine Beans, da kannst du dann auch welche weglassen die du nicht brauchst...

Lässt sich doch gut konfigurieren mit Ant oder Maven2, ausserdem bietet doch Spring selbst schon Unterstützung für verschiedene Konfigurationen.
 

ARadauer

Top Contributor
ich kann ja mit spring in einer swing anwendung, einfach spring beans als service über rmi einbinden. Diese Services können dann in meinen mit Daos über Hibernate auf die Datenbank gehen.

Bin gerade dabei, dass ich sowas plane. Welchen Vorteil oder welche Funktion hat in so einer Konfiguration noch ein Tomcat Server?
 

Noctarius

Top Contributor
Mit RMI meinst du vermutlich Spring Remoting?

"Diese Services können dann in meinen mit Daos über Hibernate auf die Datenbank gehen." <- Den Satz versteh ich Deutsch-Technisch nicht xD

"Welchen Vorteil oder welche Funktion hat in so einer Konfiguration noch ein Tomcat Server? " <- Auf Client- oder auf Serverseite?

Was genau hast du denn vor?
 

ARadauer

Top Contributor
Das geht mit dem Spring Framework sehr komfortabel. Du legst ein "Servlet Projekt" an, dort implementierst Du Deine Services (Schnittstelle zwischen Client und Server) als POJOs. Die Services könnten über DAOs mit einer DB kommunizieren.

Diese Services kannst Du dann über einfache Servlets verfügbar machen. Das funktioniert so, dass du ein DispatcherServlet in der web.xml definierst, dass alle Aufrufe an die entsprechenden Service-Objekte delegiert. Das konfigurierst Du dann entsprechend mit Spring.

Seitens des Rich Clients kannst Du dann mit Hilfe von Apache HttpClient mit dem Server kommunizieren. Das lässt sich mit ein paar Zeilen Code konfigurieren (siehe Spring HTTPInvoker).


Es ist ohne weiteres möglich, parallel dazu einen Webclient zu schreiben, wo mit Hilfe der o.g. Services z.B. JSPs oder dergleichen generiert werden.

Das hab ich ungefähr vor. Meine Frage (hoffentlich etwas verständlicher :) : kann ich mir den Tomcat sparen, wenn ich Spring Remoting (RMI) einsetze? bzw welche Vorteile würde mir ein Tomcat bringe?
 

Noctarius

Top Contributor
Ich würde dir folgende Kombination vorschlagen:
Tomcat -> Spring WS (WebService) -> WebService POJO mit @WebService Annotation -> darauf über Spring Remoting zugreifen

Der Vorteil: Tomcat in Verbindung mit dem Spring WS nimmt dir den gesamten Unterbau ab
 

byte

Top Contributor
Das hab ich ungefähr vor. Meine Frage (hoffentlich etwas verständlicher :) : kann ich mir den Tomcat sparen, wenn ich Spring Remoting (RMI) einsetze? bzw welche Vorteile würde mir ein Tomcat bringe?
Es gibt verschiedene Implementierungen für Spring Remoting, u.a. auch eine für RMI. In diesem Fall brauchst Du dann keinen Tomcat. Spring würde dann einfach eine rmiregistry starten, die dann laufen bleibt und auf Anfragen horcht (genauso wie es bei Plain RMI der Fall wäre).
Der Vorteil eines Tomcats wäre, dass Du Kommunikation über HTTP und somit weniger Probleme mit Firewalls hast. Ausserdem kannst Du halt alle Vorteile eines Webcontainers nutzen.

Ich würde dir folgende Kombination vorschlagen:
Tomcat -> Spring WS (WebService) -> WebService POJO mit @WebService Annotation -> darauf über Spring Remoting zugreifen

Der Vorteil: Tomcat in Verbindung mit dem Spring WS nimmt dir den gesamten Unterbau ab
Finde diese Antwort etwas pauschal. Webservices sind wegen des SOAP Marshallings deutlich langsamer als bsp. HTTPInvoker oder auch RMI. Wenn Du eh nur eine Java-to-Java Kommunikation hast, dann wüsste ich nicht, warum man Webservices benutzen sollte.
Hatte kürzlich mal Performance Tests zw. HTTPInovker und Webservices (Apache CXF) gemacht mit einem Objektgraphen der Tiefe 6. Aufrufe des Webservice waren um den Faktor 70 langsamer als Aufrufe über HTTPInvoker. Ausserdem wurde wesentlich mehr Heapspace beansprucht auf beiden Seiten.
 

Noctarius

Top Contributor
Finde diese Antwort etwas pauschal. Webservices sind wegen des SOAP Marshallings deutlich langsamer als bsp. HTTPInvoker oder auch RMI. Wenn Du eh nur eine Java-to-Java Kommunikation hast, dann wüsste ich nicht, warum man Webservices benutzen sollte.

Weil die Anforderungen immer mit den Möglichkeiten wachsen. Wir sind hier gerade dabei ein, über die Jahre, organisch gewachsenes System von Grund auf neu zu implementieren. Viele Sachen könnten wir uns jetzt sparen wenn wir (bzw. meine Vorgänger) damals nicht nach der selben Art gedacht hätten. Bei Zeit unkritischen Aufgaben würde ich nach Erfahrung immer generischer Arbeiten, schließlich weißt du nie was mal für Systeme angebunden werden müssen. Und ein ESB ist auch nicht immer die Lösung nachträglich.

Hatte kürzlich mal Performance Tests zw. HTTPInovker und Webservices (Apache CXF) gemacht mit einem Objektgraphen der Tiefe 6. Aufrufe des Webservice waren um den Faktor 70 langsamer als Aufrufe über HTTPInvoker. Ausserdem wurde wesentlich mehr Heapspace beansprucht auf beiden Seiten.

HTTPInvoker serealisiert die Objekte auch, nur sind die XML Daten mit mehr Aufwand beim Zusammenbauen verbunden und brauchen unheimlich viel Overhead.

Abgesehen davon ist ein WebService nicht zwangsweise eine SOAP Nachricht. Ein WebService ist grundlegend eine Schnittstelle zum Zugriff auf entfernte Systeme. Auch JMS Kommunikationen können theoretisch als WebService tituliert werden. Und Spring WS bzw CXF brauchen nicht zwangsweise SOAP zur Kommunikation.

Von RMI würde ich grundsätzlich abraten, sobald die Verbindung das traute Heim der Firma verlässt, da die Verbindung unverschlüsselt abläuft und RMI nicht mit Proxysystem klarkommt. Willst du eine RMI Technik einsetzen dann benutze SIMON (tuxedo weist dir den Weg ;)).
 

byte

Top Contributor
In diesem Fall gings ja um eine 3-Schicht-Architektur mit Richclient. Mir persönlich wärs da nicht egal, ob ein Servicecall 50ms oder 3000ms dauert. ;)

Aber das schöne bei Spring ist ja, dass man das alles mehr oder weniger konfiguriert. Wir haben in unserem Projekt jetzt Services per HTTPInvoker mit unserem Richclient verbunden. Wenn mal ein weiteres System dazukommt, dass HTTPInvoker nicht versteht (weil es z.b. gar keine Java-Anwendung ist), dann können wir problemlos einen Webservice nachliefern, der die nötigen Daten per SOAP oder was auch immer liefert.

Ich sehe keine Notwendigkeit, perse alles mit Webservices zu machen, nur weil sich Anforderungen ändern können.
 

byte

Top Contributor
Es war schon deutlich mehr Aufwand, das ganze mit Apache CXF zum Laufen zu bekommen als beim reinen HttpInvoker. Aber im Grunde hast Du recht, es ist nur ne Frage der Konfiguration.

Wobei es noch eine Sache gibt, die mit CXF partou nicht laufen wollte, und zwar zyklische Referenzierung (z.B. bei bidirektionalen Parent-Child Referenzen)! Aber ich bin auch kein Experte, was Webservices angeht...
 

Noctarius

Top Contributor
Puh dazu hätte ich spontan auch keine Idee, da WebServices meist versucht werden stateless zu halten. Übrigens ein weiteres schönes Beispiel für WebServices ohne SOAP ist ein REST-Service :D
 

byte

Top Contributor
Die Webservices sind ja Stateless. Die Referenzierung bezieht sich ja auf die zu übertragenden Daten. Apache CXF kommt offenbar beim Marshalling / Unmarshalling nicht mit Zyklen zurecht.
 

Noctarius

Top Contributor
Hm dann glaub ich versteh ich gerade nicht auf was du hinaus willst :D Manchmal fehlt doch das Wissen vom Studium ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Subprozess auf Application Server ausführen Allgemeines EE 6
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
K Java Application Server + ganttproject *.jar Anwendung Allgemeines EE 6
flashfactor Gibt es ein Case Management für Java Application Server? Allgemeines EE 6
M Java Application Server in einem ungesunden Zustand Allgemeines EE 4
X Sun Application Server 9 - EJB3 Zugriffsproblem Allgemeines EE 2
G Application Server! Gibt es eine grundsätzliche Architektur? Allgemeines EE 9
M Übersicht über Application Server Allgemeines EE 3
B Sun Application Server 8 --- Nichtsaussagende Fehlermeldung Allgemeines EE 2
B Was kostet ein Application Server Allgemeines EE 18
K Sun Application Server - Servlets laufen nicht Allgemeines EE 2
E Web-, EJB-Container - Application Server Allgemeines EE 6
S Tomcat Application Path bestimmen Allgemeines EE 0
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
L Spring REST Application (Data Retrive) API und Architectur hilfe Allgemeines EE 11
S FAIL - Deployed application at context path /Address but context failed to start Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
Y Caching Application Allgemeines EE 20
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
G Login into Web Application Allgemeines EE 9
P Nur ein User für Web Application Allgemeines EE 11
J Wicket-Projekt: "Unable to create application..." Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
D Wohin mit Resourcen (Bilder, txt Dateien) im Application Client Allgemeines EE 3
K Glassfish Application Client Allgemeines EE 4
N Objekte zwischen zwei Application Contexts austauschen Allgemeines EE 19
J prozesse aus der application-bean threadfähig? Allgemeines EE 4
F Application in HttpServlet abfragen? Allgemeines EE 5
H Test Application für Tomcat Allgemeines EE 3
L xpetstore ejb sample application läuft nicht :-((( Allgemeines EE 7
T statische Methoden versus Application-Bean Allgemeines EE 2
K Datei schreiben in einer Web-Application Allgemeines EE 3
M Debugging mit Eclipse / Web-Application Allgemeines EE 2
R Problem beim hochladen einer Web Application Allgemeines EE 16
thor_norsk Glassfish Server unter Windows startet nicht! Allgemeines EE 20
L Tcp-IP Server an Rest Schnittstelle Allgemeines EE 20
4a61766120617274697374 Managed Server im J2EE Umfeld Allgemeines EE 0
B Integrierte Datenbank in Wildfly Server Allgemeines EE 2
N wildfly | jax-ws | Server mit WS-Reliable Messaging Allgemeines EE 0
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
B Ordner von Client an Server senden Allgemeines EE 2
N JBOSS7 server.log rotieren Allgemeines EE 3
J Client Request vom Server aus. Allgemeines EE 2
P Context and Dependency Injection (CDI) ohne Server Allgemeines EE 6
S Jboss Server Allgemeines EE 5
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
Evil-Devil Server/Tech-Empfehlung für Web-App? Allgemeines EE 12
Y Jasperreport Pfadprobleme am Server Allgemeines EE 11
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
T MS SQL Server, GlassFish, JDBC Allgemeines EE 2
G XML vom Server zum Client Allgemeines EE 4
T The server does not support version 3.0 of the J2EE Web module specification. Allgemeines EE 6
MQue Datei vom Server downloaden Allgemeines EE 2
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
MQue Server Pfad Allgemeines EE 17
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
GFEMajor EJB auf externem Server aus GWT aufrufen Allgemeines EE 13
musiKk Langlebige Berechnungen auf Server ausführen Allgemeines EE 5
N erstes Java EE Projekt - Server/ EJB-Verbindung-Anfängerfage Allgemeines EE 17
H Server VM warning: bailing out to foreground collection Allgemeines EE 1
K Sriplets & Servlets: Offline Projekt auf Server realisie Allgemeines EE 2
B Welchen Applikation-Server verwendet ihr? Allgemeines EE 6
A Windows 2003 Server, ActivDirectory,Zertifikatslösung mit J? Allgemeines EE 2
M Bibliotheken ins Projekt oder auf den Server stellen? Allgemeines EE 4
S Suche gutes JSF(Java Server Faces)-Tutorial Allgemeines EE 2
E Portal Server Evaluation Allgemeines EE 3
M Überblick verloren, viele Frameworks, Server & Co Allgemeines EE 3
G Deployen am JBoss Server Allgemeines EE 14
M Objektübergabe von Client zum Server Allgemeines EE 11
S Java Server Faces & Google Web Toolkit verheiraten ? Allgemeines EE 2
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
R Jboss-Server mit Beispielanwendung füttern Allgemeines EE 2
M probleme mit client server kommunikation Allgemeines EE 3
I Sun App Server JDBC MySQL Allgemeines EE 2
D Servlet Problem über Server Allgemeines EE 26
L Tomcat auf Windows Server 2003 Allgemeines EE 10
M datei liste (jsp,html) von einem Server Allgemeines EE 4
W Eine Form an einen fremden Server schicken. Allgemeines EE 3
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
karambara weiterleiten zu url (nicht auf dem eigenen server) Allgemeines EE 1
K STRUTS The server encountered an internal error Allgemeines EE 5
D Eure Meinung über Internal Server Error Allgemeines EE 2
haomomo *.do URLs dont work in apache web server+tomcat Allgemeines EE 3
S Verständnisproblem: WebSphere und HTTP Server Allgemeines EE 2
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
R Embedded WebService-Server Allgemeines EE 4
N Einbindung einer Bean in eine JSP (Tomcat-Server 5.5.x) Allgemeines EE 2
clemson Ordner auf Linux-Server erstellen --> Rechteproblem Allgemeines EE 5
C JBoss Server unter Eclipse 3.1 Allgemeines EE 2
TRunKX Wie kriege ich die Auswahl in meinen Server Request? Allgemeines EE 7
clemson [Struts] Validierung server-seitig bringt StackOverflowError Allgemeines EE 5
K Java Server Pages und Images Allgemeines EE 10
W Servlet killt Server? Allgemeines EE 7
K Virtueller Server <> Root Server Allgemeines EE 3
K Kostenloser Portal Server Allgemeines EE 2
W Java-APIs in Java ServerPages, Java Server Faces ? Allgemeines EE 2
J server ignoriert jsp code Allgemeines EE 4
T Servlets und Dateizugriff auf dem Server Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben