SOAP -Server - Verständnisfragen.

Status
Nicht offen für weitere Antworten.

DocMcFly

Bekanntes Mitglied
Hallo,

Als ich damals meine erste JAVA-Web-App. gebastelt hab, auf meinem Linux-Testserver (DebianSarge) etwas umständlich Sun's Java 1.4.2 SDK und den ApacheTomcat 5.0.28 installiert.

Jetzt würde ich gerne eine SOAP-Anwendung auf dem Server installieren. Aber ich bin verwirrt, was ich brauche, was ist gut und was ist schlecht?!

1. Brauche ich überhaupt Tomcat für Soap? Hilft mir Tomcat?

2. Soll ich auf Tomcat 5.5 oder Java 1.5 upgraden?

3. Wenn ich Tomcat habe, was macht dann ApacheAxis? Oder brauche ich nur eins von beiden?

4. Wenn ich Java5 SDK herunterladen und installieren will (http://java.sun.com/javaee/downloads/index.jsp) bekomme ich auch noch einen App-Server von Sun? Brauche ich den auch? Wo bekomme ich ein nacktes SDK5?

5. Ist in Java5 SDK J2EE drin? Was genau mach J2EE?
( Laut http://www.torsten-horn.de/techdocs/java-soap.htm#ApacheSOAP brauche ich J2EE... )

5a. Gibt es ein aktuelleres HowTo als http://www.torsten-horn.de/techdocs/java-soap.htm#ApacheSOAP ?

6. Wenn ich 1.4.2 behalte muss ich J2EE noch nachladen?

7. Ist es klüger WSDL zu verwenden? (Wird es auch von anderen Sprachen gut unterstützt?)

8. Muss ich vielleicht SOAP garnicht installieren, weil ich es ins WAR-File packen kann (inkl. j2ee.jar)?

Ich hab jetzt einige Texte gelesen, in denen steht zwar was die einzelnen Komponenten so machen, aber mir fehlt der globale Überblick. Drum kann ich auch nicht so richtig entscheiden, was ich brauche und was nicht.

Vielen Dank fürs Lesen und Antworten...

Clemens
 

SnooP

Top Contributor
Wenn dir der globale Überblick fehlt, dann solltest du dir doch am ehesten mal nen gutes Buch zum Thema durchlesen... sonst wird's immer schwierig...

ich versuche mal kurz und knapp zu antworten:

1. Man braucht für SOAP bzw. für die Verarbeitung von Webservices eine SOAP-Engine... genau dies ist Axis und Axis ist nichts anderes als ein Servlet, was man z.B. mit Hilfe von Tomcat nutzen kann - also Jein ;)

2. Bei Tomcat 5.5 keine Ahnung welche Verbesserungen da drin sind... - ich würde bei Neuinstallationen immer die neuesten Versionen einer Software benutzen, es sei denn diese haben sich so grundlegend geändert, dass kein Tutorial der Welt mehr aktuell ist... dann nützt mir das nichts.

3. Siehe 1 - Axis brauchst du - Tomcat alleine kann kein SOAP.

4. Das J2SDK 1.5 ist nackt... enthält keinen Appserver... J2EE wiederum enthält eben jenen... den benutzen jedoch nur die wenigsten ;) ... - aber in deinem Fall ist es auch nicht zwingend notwendig, dass du einen Appserver hast. Es sei denn du möchtest eigentliche eine komplexe Enterprise Application aufbauen und dafür EJBs verwenden. Dazu benötigst du dann tatsächlich Application Server - ich würde da den JBoss im Open-Source-Bereich vorschlagen... - aber wie gesagt, wenn du nur SOAP machen möchtest und nur Webservices nutzen willst, brauchst du nicht auch noch nen Appserver.

5. keine Ahnung - kenn ich nich ;)

6. Wenn du nur das nackte J2SDK 1.4.x hast, ja. Auch ein Java 1.5 enthält imho nicht alle Packages die man benötigt... J2EE solltest du dir also runterladen

7. WSDL ist kein Konkurrenzprodukt - WSDL heißt Webservice Description Language und ist nichts anderes als eine XML-basierte Schnittstellenbeschreibungssprache für Webservices. Dies wird ohnehin benötigt... kann jedoch über die Axis-Engine anhand von Java-Interfaces automatisch generiert werden... - evtl. solltest du dir mal nen gutes Buch oder Tutorial zum Thema Axis und Webservices reinziehn.

8. Versteh ich nich ;) - SOAP kann man nicht installieren... das ist eine Sprache, die eine SOAP-Engine verstehen kann. Diese Engine brauchst du und die gibts halt z.B. in Form von Axis... natürlich gibt es auch noch andere Engines... hatten wir erst vor kurzem... persönlich kenn ich aber nur Axis.
 

DocMcFly

Bekanntes Mitglied
Vielen Dank... Deine Antworten und ein paar Webseiten lassen allmählich den Nebel schwinden...

Nun stellt sich mir die Frage: Ist das Ganze nicht Overkill oder viel zu kompliziert?

Kurzer Umriss was ich vorhabe: Ich habe eine lokale Applikation, welche DB-Operationen ausführt und Infos bereitstellt.

Jetzt möchte ich einige dieser Funktionen auch verteilten Clients zur Verfügung stellen. Ich dachte mir das so:

Client braucht Infos >>> macht er eine Anfrage an den Server >>> der verwendet die Funktionen (Methoden) die bereits existieren und gibt die Infos wieder zurück >>> Client zeigt an.

Da ich von hause auch nicht der Fleißigste bin... dachte ich mir: SOAP gibt es schon und scheint das zu machen, was ich will... so muss ich mir keine eigenen Kommunikationprotokolle ausdenken und schreiben.

Das ist ja alles ganz nett - aber ich bin sehr irritiert... Bis her hab ich bei WebApps diese als WAR-File bei Tomcat hochgeladen und dann gingen diese...

Bei Soap .. hab ich dieses Deploy-Interface, wo ich nicht weiß was der von mir will... Wo kann ich die Serverklassen hochladen... oder muss ich das umständlich über die Konsole machen?

SOAP & AXIS läuft unter meinem Tomcat 5.0.28 (JAVA 1.4.2) und nun?

:?: Clemens :?:
 

SnooP

Top Contributor
nunja - du brauchst entweder einen deployment-descriptor - oder du machst das über .jws Dateien... - guck dir mal das folgende Tutorial an:
http://www.torsten-horn.de/techdocs/java-soap-axis.htm

das zeigt eigentlich alles recht hübsch... - idealerweise macht man ne entsprechende Fassaden-Klasse, die diejenigen Methoden enthält, die über dem Webservice ansprechbar sein sollen.. diese können dann auf die eigentliche Logik auf dem Server zugreifen.

Aber Tatsache ist, dass man den Webservice per axis deployen bzw. auch undeployen muss... - die Aufrufe sind ja aber auch nich soo tragisch ;)
 

DocMcFly

Bekanntes Mitglied
Hallo,

vielen Danke wiedermal für die schnell und geduldige Hilfe...

Für die Leute die es am liebsten ganz kurze Zeit auf der Konsole verbringen, habe ich hier zwei Shellskripte geschrieben, die sich an diesem Kapitel ( http://www.torsten-horn.de/techdocs/java-soap-axis.htm#WebService-mit-WSDD ) des HowTos orientieren und so das deployen und undeployen beschleunigen solllen.

Zu erst das Skript zum Deployen. (WICHTIG: Die Pfade und ggf. die jar-Namen anpassen!)
Code:
#!/bin/sh

# Package & Klasse?
CLASSNAME=$2
PACKAGE_PATH=$1

#Verzeichnisse ... 
BASIS_DIR=/opt/tomcat/webapps/axis
WEBINF_DIR=$BASIS_DIR/WEB-INF
SOURCE_DIR=$WEBINF_DIR/src
CLASSES_DIR=$WEBINF_DIR/classes
DEPLOY_DIR=$BASIS_DIR/wsdd
TEMPLATE_DIR=$BASIS_DIR/template

WSDD_DEPLOY_FILE=$2.deploy.wsdd
WSDD_UNDEPLOY_FILE=$2.undeploy.wsdd

# Classpath
CLASSPATH=.:lib/activation.jar:lib/axis.jar:lib/axis-ant.jar:lib/commons-discovery-0.2.jar:lib/commons-logging-1.0.4.jar:lib/jaxrpc.jar:lib/log4j.jar:lib/mail.jar:lib/saaj.jar:lib/wsdl4j.jar

# die Java-Klassen kompilieren....
cd $SOURCE_DIR
find -type d -exec mkdir $CLASSES_DIR/{} 2>/dev/null \;
find -iname "*.java" -exec javac -classpath $CLASSPATH -d $CLASSES_DIR {} \;

# Deploy-File erzeugen...
cat $TEMPLATE_DIR/deploy.wsdd | sed -e 's/$CLASSNAME/'"$CLASSNAME"'/;s/$PACKAGE_PATH/'"$PACKAGE_PATH"'/' >$DEPLOY_DIR/$WSDD_DEPLOY_FILE

# Undeploy-File erzeugen...
cat $TEMPLATE_DIR/undeploy.wsdd | sed -e 's/$CLASSNAME/'"$CLASSNAME"'/;s/$PACKAGE_PATH/'"$PACKAGE_PATH"'/' >$DEPLOY_DIR/$WSDD_UNDEPLOY_FILE

#Das eigentliche Deployen...
cd $WEBINF_DIR
java -cp $CLASSPATH  org.apache.axis.client.AdminClient $DEPLOY_DIR/$CLASSNAME.deploy.wsdd

Der Aufruf:
Code:
# ./deploy.sh myPackage myClass

Jetzt das Skript fürs Undeployen...

Code:
#!/bin/sh

# Package & Klasse?
CLASSNAME=$2
PACKAGE_PATH=$1

#Verzeichnisse ... 
BASIS_DIR=/opt/tomcat/webapps/axis
WEBINF_DIR=$BASIS_DIR/WEB-INF
SOURCE_DIR=$WEBINF_DIR/src
CLASSES_DIR=$WEBINF_DIR/classes
DEPLOY_DIR=$BASIS_DIR/wsdd
TEMPLATE_DIR=$BASIS_DIR/template

WSDD_DEPLOY_FILE=$2.deploy.wsdd
WSDD_UNDEPLOY_FILE=$2.undeploy.wsdd

# Classpath
CLASSPATH=.:lib/activation.jar:lib/axis.jar:lib/axis-ant.jar:lib/commons-discovery-0.2.jar:lib/commons-logging-1.0.4.jar:lib/jaxrpc.jar:lib/log4j.jar:lib/mail.jar:lib/saaj.jar:lib/wsdl4j.jar

cd $WEBINF_DIR

# Das Undeployen...
java -cp $CLASSPATH org.apache.axis.client.AdminClient $DEPLOY_DIR/$WSDD_UNDEPLOY_FILE

Der Aufruf:
Code:
# ./undeploy.sh myPackage myClass

und wer sich die Skipte aufmerksam angesehen hat, sucht noch die Templates:

deploy-Template:

Code:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="$CLASSNAME" provider="java:RPC">
    <parameter name="className" value="$PACKAGE_PATH.$CLASSNAME" />
    <parameter name="allowedMethods" value="*" />
    <parameter name="scope" value="Request" />
  </service>
</deployment>

und undeploy-Template:

Code:
<undeployment xmlns="http://xml.apache.org/axis/wsdd/">
  <service name="$CLASSNAME" />
</undeployment>

Wers braucht.. viel Spaß damit...

Clemens
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Client-Server und SOAP Netzwerkprogrammierung 23
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
M SocketError bei Aufruf eines SOAP-Servers Netzwerkprogrammierung 8
U Client Soap Verbindung wieder schließen Netzwerkprogrammierung 0
S soap kann nicht zu 127.0.0.1:8090 unter Windows verbinden Netzwerkprogrammierung 2
M SOAP & Performance? Netzwerkprogrammierung 14
P Atlassian Jira und die SOAP Schnittstelle Netzwerkprogrammierung 2
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
0 soap client ohne WSDL Netzwerkprogrammierung 3
R Anlaufprobleme mit SOAP Netzwerkprogrammierung 13
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
J Stubs für SOAP-Webservice generieren. Ich bekomme es einfach nicht hin... Netzwerkprogrammierung 3
M SOAP Messaging Fehler Netzwerkprogrammierung 10
reibi Börsenkurse zB mit SOAP beziehen Netzwerkprogrammierung 3
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
D SOAP Message deserialisieren Netzwerkprogrammierung 2
D SOAP Message abfangen und auslesen Netzwerkprogrammierung 3
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
D SOAP-Message von ebay abfangen (Notification) Netzwerkprogrammierung 2
S SOAP Attchmentsa encoding base64 Netzwerkprogrammierung 3
G SOAP-JAVA Netzwerkprogrammierung 13
H SOAP-Nachricht mit Java Netzwerkprogrammierung 8
T SOAP / IIS Netzwerkprogrammierung 3
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
A protokoll unter soap Netzwerkprogrammierung 3
hieuhp132 Server wird nicht auf zweiten Anfrage von Client geupdated Netzwerkprogrammierung 3
I RMI ConnectionRefused schon bei Server-binding Netzwerkprogrammierung 11
R Websockets oder server sent events? Netzwerkprogrammierung 2
W Windows 2019-Server Dienste starten unter Nutzer Netzwerkprogrammierung 1
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
J Multithreaded-Server Netzwerkprogrammierung 21
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
F NodeJs-Server auf Firebase hosten ? Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
H HTTP Glassfish (v5) Application Server - Bibliothek zur Verfügung stellen Netzwerkprogrammierung 4
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
P TCP-Server Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
F Server für Java Applikationen Netzwerkprogrammierung 16
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
G Server-Client IO Problem Netzwerkprogrammierung 6
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
L Socket Wie kann ich checken ob ein User eine Nachricht per Outputstream an den Server gesendet hat? Netzwerkprogrammierung 1
T Jetty Server LOGGING Netzwerkprogrammierung 1
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
T server empfängt nur 1 Buchstaben vom String Netzwerkprogrammierung 1
S Spiel mit Server programmieren Netzwerkprogrammierung 2
N Post u Head Request an Server Netzwerkprogrammierung 4
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
J Socket Tutorial zu Multiplayer Server schreiben? Netzwerkprogrammierung 5
S Java Chat Server Netzwerkprogrammierung 8
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
KaffeeFan Programmierung mit Cloud-Server Netzwerkprogrammierung 0
L Socket Problem mit Server Netzwerkprogrammierung 1
cezary Socket Paralleler Server ? Netzwerkprogrammierung 1
I Socket Leicht zu DDosender Server Netzwerkprogrammierung 4
agent47 HTTPs Server Netzwerkprogrammierung 5
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
J Prüfen, ob remote UDT Server erreichbar ist Netzwerkprogrammierung 0
P Server als Client nutzen Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben