Kommunikation von Webanwendungen (auf Tomcat Server) untereinander

JavaMe

Mitglied
Hallo zusammen,

ich habe eine Webanwendung (WebApp1) auf einem Tomcat Server laufen. Diese enthält eine Reihe von JAVA Servlets und hat über 60 JARs im Bauch (davon gut 50 Fremdbibliotheken wie Spring, Apache Commons, Log4j, MQ, etc). Jetzt muss ich ein neues Third-Party Framework einbinden welches ebenfalls mit über 50 JARs daherkommt. Von diesen überschneiden sich einige (ca. 20 Stück) mit denen von WebApp2. Die Jars tragen teilweise unterschiedliche Versionsnummer und es gibt auch Klassen, die in völlig unterschiedlichen JARs vorkommen.

Um Konflikte zu vermeiden, habe ich mich entschieden, die Funktionen des neuen Frameworks in eine eigene Webanwendung (WebApp2) auszulagern, damit jede Webanwendung mit "seinen" JAR Files und darin enthaltenen JAVA Klassen arbeiten kann. Beide Webanwendungen sollen auf ein und dem selben Tomcat Server laufen.

Zwischen den beiden Webanwendungen muss ich Daten austauschen. Ein Byte-Array (enthält ein Xml-Dokument) und ein paar Strings. Teilweise können die XML-Dokument bis zu einem MB groß sein.

Nun ein paar Fragen zur Umsetzung:

1) Sollte ich HTTP Put oder HTTP Post verwenden ? HTTP Put habe ich bislang noch nie benutzt. Hätte ich dadurch irgendwelche Vorteile ?
2) Kann/sollte ich die Java-Objekte serialisieren oder mir einfach eine Schnittstelle ausdenken, die als Vereinbarung zwischen Sender und Empfänger gilt ?
3) Sollte ich die Daten des ByteArrays komprimieren, bevor ich sie an WebApp2 sende oder kann ich das vernachlässigen, weil beide WebApps in einer Tomcat Server Instanz laufen ?
4) Sollte man die Daten des ByteArray bas64 kodieren ?
5) Kann ich Exception Objekte aus WebApp2 an WebApp1 zurückliefern ?

Wie Ihr seht, kenne ich mich in Sachen Serialisierung nicht sehr gut aus. Ein Tipp reicht. Dann lese ich mir gerna alles Notwendige an.

Hoffe auf Eure Hilfe.

Danke im Vorraus

Holger
 

JavaMe

Mitglied
Hallo zusammen,

da sich noch niemand gemeldet hat, hier mal ein Zwischenbericht:

2) Kann/sollte ich die Java-Objekte serialisieren oder mir einfach eine Schnittstelle ausdenken, die als Vereinbarung zwischen Sender und Empfänger gilt ?
=> Ich weiß nun, wie das mit dem Serialisieren geht. Habe mich allerdings dafür entschieden, die Werte der paar Strings im HTTP-Header zu übertragen und das Byte Array so an die andere Webanwendung zu übertragen, wie es ist.


3) Sollte ich die Daten des ByteArrays komprimieren, bevor ich sie an WebApp2 sende oder kann ich das vernachlässigen, weil beide WebApps in einer Tomcat Server Instanz laufen ?
=> Habe mich gegen das Komprimieren entschieden.

4) Sollte man die Daten des ByteArray bas64 kodieren ?
=> Da ich keine Binärdaten transportieren muss, kann ich mir das auch sparen.

5) Kann ich Exception Objekte aus WebApp2 an WebApp1 zurückliefern ?
=> Hier übelege ich noch, ob ich die Exception aus WebApp2 per Serialisierung an die aufrufende WebApp1 zurückschicke. Kann aber auch sein, dass ich nur einen Returncode zurückliefere, den WebApp1 dann auswertet.

Bleibt also noch die erste Frage offen:

1) Sollte ich HTTP Put oder HTTP Post verwenden ? HTTP Put habe ich bislang noch nie benutzt. Hätte ich dadurch irgendwelche Vorteile ?

Hat hierzu noch jemand einen Rat ?

Schönes Wochenende

Holger
 
J

JohannisderKaeufer

Gast
Abhängig von Aufwand und größe der Projekte, sowie dem zur Verfügung stehenden Server kann ich mir auch vorstellen das sich sowas mit JEE und EJB's umsetzen läßt.

Sprich, neben dem Tomcat einen EJB-Container laufen lassen oder gleich einen JEE-Server verwenden.

Die Business-Logik aus der Webanwendung herausoperieren und in die EJBs verpacken.

Von beiden Webanwendungen per lookup auf die EJBs zugreifen.

Das wäre einerseits am wenigsten "gefrickel" und langfristig die bessere Lösung.

Kommt eine weitere Anwendung hinzu greift, man über das Interface der EBJs einfach auf die Businesslogik zu.

Das Risiko das man sich bei der Kommunikation verhedert oder falsch serialisiert fällt weg.
 
B

...ButAlive

Gast
Wie baust du denn deine Applikation? Ich würde eher Maven oder Ähnliches, zur Verwaltung der Abhängigkeiten verwenden, anstatt eine zweite Webapplikation zu erstellen. Damit könntest du dann auch Versionskonflikte auflösen.
 

JavaMe

Mitglied
Wie baust du denn deine Applikation? Ich würde eher Maven oder Ähnliches, zur Verwaltung der Abhängigkeiten verwenden, anstatt eine zweite Webapplikation zu erstellen. Damit könntest du dann auch Versionskonflikte auflösen.

Unsere Applikation werden allesamt seit Jahren mit ANT gebuildet. Der Buildprozess ist bei uns festgeschrieben und unveränderlich. Jedenfalls, was unser Projekt betrifft. Deshalb kommt Maven oder Ähnliches nicht in Frage und die Entscheidung für eine weitere Webanwendung steht.

Deshalb bleibt meine Frage:

Sollte ich HTTP Put oder HTTP Post verwenden ? HTTP Put habe ich bislang noch nie benutzt. Hätte ich dadurch irgendwelche Vorteile ?

PS: Danke für Eure Ratschläge architektureller Art. Hätte ja durchaus sein können, dass diese geholfen hätten.
 

irgendjemand

Top Contributor
mal davon abgesehen das HTTP PUT dazu gedacht war dateien via HTTP dierek auf einen server raufzuladen *bevor es FTP gab* wäre das in der heutigen zeit ein extremes sicherheitsrisiko ... desswegen ist HTTP PUT heute meist deaktiviert oder überhaupt nicht mehr implementiert ...
von daher erübrigt sich deine frage da dein server aus sicherheitsgründen HTTP PUT gar nicht mehr unterstützen sollte ... wenn er dies doch tut solltest du dieses loch so schnell wie möglich stopfen ... das kann gefährlich werden ...

zum allgemeinen : auch wenn ich mich in der EE szene nicht so gut auskenne bin ich doch der meinung das es möglich sein sollte dierekt innerhalb des servers die daten zu übergeben ... anstatt über HTTP "mit sich selbst" zu connecten ... *lösung wurde oben schon erwähnt*

da ich auch den anderen thread kenne in dem es um den grund für diesen thread hier ging ... nämlich die verschiedenen versionen und deren abhängigkeiten ... sehe ich eigentlich kein grund für deine entscheidung ...
wir haben dich im anderen thread bereits darauf hingewiesen das es möglichkeiten gibt diese abhängigkeits-unterschiede zu prüfen ... so das du dann nachher wirklich nur noch je ein jar pro lib hast ... und nicht zwei in verschiedenen versionen ...

grundsätzlich sollte aber gelten das sich die libs nicht all zu sehr unterscheiden sollten da es vermutlich alles annährend gleiche major-releases sind *so kam es zumindest im andere thread rüber das sich die libs nur im minor oder sogar nur im build unterscheiden* ...

probiere es doch einfach mal aus welche app probleme macht wenn du die eine oder andere version von verschiedenen libs verwendest ... sollten beide mit einer neueren version einer lib laufen solltest du diese verwenden ... sollte eine probleme machen versuche ob beide mit der älteren laufen ... gibt es dann immer noch probleme kontaktiere denjenigen der sich so fest auf dieses eine releaese festgefahren hat so das seine webapp nicht mit anderen versionen läuft ...

wenn du soweit bist hast du nachher zwar eine menge libs ... aber von jeder nur ein jar und weist das deine apps trotzdem sauber laufen ...

dann kannst du am ende beide zusammenkleben und zu einer großen app machen ...


das ganze ist viel arbeit ... das wissen wir ... aber es ist auf jeden fall die mühe wert anstatt den server mit haufen apps zu belegen nur weil man versions-konflikte in abhängigkeiten hat und sich scheut diese zu lösen ... und dann noch mit HTTP "außenrum" geht ... das ist nun wirklich keine lösung ... auf sowas würden vielleicht "java-anfänger" kommen ... aber wehr sich schon soweit mit java befasst das er im EE umfeld "heimisch" ist ... der sollte für sowas grundlegendes eigentlich auf die lösung kommen das man sich da mal n wochenende ransetzt und die libs einpflegt ...
 

homer65

Top Contributor
Vielleicht solltest du dir auch mal OSGI anschauen.
Dort werden nicht alle jar nach aussen sichtbar, so das du mit "doppelten" jar arbeiten kannst.
 

JavaMe

Mitglied
Hi,

Danke für die "Aufklärung" in Sachen POST und PUT.

Wie ich schon geschrieben habe, steht die Entscheidung fest, eine zweite Webanwendung zu bauen.

Beide Hersteller (der eine liefert den Kern, den wir in Teilen erweitern, der andere liefert das neu einzubindende Framework), haben dies ebenfalls empfohlen. Selbst wenn man sich jetzt die Arbeit machen würde, die JARs zu untersuchen und doppelte zu entfernen, würde man diesen Aufwand bei jedem neuen Release beider Hersteller erneut treiben müssen. Es handelt sich bei der "App" auch nicht um eine kleine Anwendung, die man mal an einem Wochenende durchtesten kann. Ist aber auch egal.

Tausend Dank für all Eure Hilfe !!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
G Socket Socket Kommunikation Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
T Client zu Client Kommunikation Netzwerkprogrammierung 2
K Socket Nur bestimmte Zeichen als Kommunikation zulassen Netzwerkprogrammierung 1
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
H Android - PC kommunikation Netzwerkprogrammierung 3
S Server Kommunikation Netzwerkprogrammierung 1
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
M Kommunikation übers Internet Netzwerkprogrammierung 9
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
I Interne Computer Kommunikation Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
R Server zu Client Kommunikation Netzwerkprogrammierung 11
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
Y HTTP Google Reader API Kommunikation Netzwerkprogrammierung 3
C Socket Kommunikation mit SMTP-Server Netzwerkprogrammierung 4
H Kommunikation Netzwerkprogrammierung 8
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
E Zeitgleiche Kommunikation, mögliche Ansätze Netzwerkprogrammierung 17
1 Java to Android TCP Kommunikation Netzwerkprogrammierung 2
O php - applet Kommunikation Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
R Kommunikation TCP + UDP Netzwerkprogrammierung 3
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
1 Kommunikation mit externem Programm über TCP Netzwerkprogrammierung 2
D Server-Client (Web) Kommunikation Netzwerkprogrammierung 9
E Client-Server-Kommunikation Netzwerkprogrammierung 13
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
DamienX Socket Asnchrone Kommunikation Netzwerkprogrammierung 5
Raidri Rückwertige RMI Kommunikation Netzwerkprogrammierung 6
S TCP/IP-Kommunikation ist zu langsam Netzwerkprogrammierung 13
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
G java asynchrone kommunikation Netzwerkprogrammierung 8
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
G Objecte für Kommunikation nutzen Netzwerkprogrammierung 2
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
RaoulDuke RMI Kommunikation Java <-> Perl Netzwerkprogrammierung 7
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
S Kommunikation zweier Java-Programme Netzwerkprogrammierung 6
J client/server kommunikation Netzwerkprogrammierung 3
T Kommunikation auf Byte-Ebene zw. C und Java via Socket Netzwerkprogrammierung 12
M Client-Kommunikation ohne Server Netzwerkprogrammierung 7
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
J Kommunikation zw. Server und mehreren Clints haut nicht hin Netzwerkprogrammierung 2
K Socket Kommunikation Netzwerkprogrammierung 3
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
G JINI über RMI // Client-Server Kommunikation Netzwerkprogrammierung 4
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
G Tomcat / Catalina - Ausbrechen aus dem Context Netzwerkprogrammierung 2
A Datei erzeugen und auf der Weboberfläche downloaden (Tomcat) Netzwerkprogrammierung 4
A Classpath Tomcat, Start von Programm aus Tomcat Container Netzwerkprogrammierung 1
J PC als Tomcat-Server Netzwerkprogrammierung 13
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
T Tomcat: Analyse der CPU Auslastung Netzwerkprogrammierung 1
M eclipse helios neuen tomcat server erstellen Netzwerkprogrammierung 8
O Tomcat 6.0 Log mit java.util.logging - Timestamp aus Logfilenamen entfernen Netzwerkprogrammierung 1
B Tomcat Apache Server Netzwerkprogrammierung 6
T Tomcat zeigt immer nur eine Seite Netzwerkprogrammierung 3
R Client (Swing) Server(Tomcat?) Application Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
R Tomcat logging mit Log4j Netzwerkprogrammierung 5
J Probs bei Verbindung mc4j mit Tomcat 4.1.24 Netzwerkprogrammierung 4
A Alternative zu Tomcat, Axis, WebSphere Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben