Von WebService auf anderen WebService zugreifen?

Status
Nicht offen für weitere Antworten.

nEp

Aktives Mitglied
Hi,

ich habe ein Problem: Und zwar habe ich einen WebService, welcher für seinen Dienst auf 2 andere WebServices zugreifen muss. Ich benutze Axis2 in Tomcat.

Prinzipiell ja nicht so schwer denke ich mal, da muss ich dann halt auch wie aus Client-Sicht programmieren. Allerdings klappt das ganze nicht so wirklich, ich kriege ständig eine Exception geschmissen, wenn ich dann diesen WebService von einem einfachen Java-Client aus testen will. Die Exception sieht so aus:
"Exception in thread "main" org.apache.axis2.AxisFault: The server failed to process the WS-Addressing header: wsa:Action [Reason]: A header representing a Message Addressing Property is not valid and the message cannot be processed"

Ich denke aber mal ich weiß woran das liegt. Die ganzen JARs, die man ja normalerweise im Classpath einer Client-Applikation haben muss, hab ich jetzt in meinem WebService natürlich nicht drinnen. Und der muss ja analog zu einem Client auch auf andere Services zugreifen. Ich denke mal dass es daran liegt. Jetzt stellt sich mir nur die Frage, wie kriege ich das am besten hin? Also wie benutzt mein WebSerivce (simple .aar Datei) auch die benötigten JARs?

Ich hoffe dass mir hier jemand helfen kann... danke.

P.S. Die beiden anderen WebServices die benutzt werden sollen, arbeiten korrekt, das habe ich getestet. Und wenn ich in meinem anderen WebService, der eben diese beiden WebServices benutzen soll, die entsprechenden Aufrufe rausnehme, dann gibts da auch keine Fehler. Deshalb denke ich eben, dass das damit zusammenhängt dass die entsprechenden JARs fehlen.
 
G

Gast

Gast
die Liberies, die du für dein Webservice-Client benötigst, kopierst du unter: \tomcat\webapps\axis2\WEB-INF\lib
 

nEp

Aktives Mitglied
Hm danke, aber das hat nichts gebracht, zudem da sowieso schon so gut wie alle Bibliotheken waren.

Das ist echt zum Auswachsen... ich hab meinen Webservice mal "lokal", also als reinen Client getestet (mit ner main-Methode) und von dort einfach die beiden WebService-Methoden die ich habe (und die eben andere WebSErvices benutzen) aufgerufen. Das funktioniert alles wunderbar....
Aber sobald diese Klasse eben auch als WebService in Axis deployt ist, läuft das Teil nicht mehr :(
Deswegen denke ich nach wie vor, dass da irgendwas mit den Libs nicht stimmt? Weil eigentlich müsste das ja dann theoretisch genauso laufen...
 
G

Gast

Gast
wie sieht denn deine Webservice Implementierung aus. Wenn ich dich richtig verstanden habe, hast du die Klasse vom Client (mit der main-Methode) als Webservice-Implementierung genommen?
 

nEp

Aktives Mitglied
Nein also mein WebService sieht ganz einfach aus:

Pseudocode:

Code:
public class MyService {

     public void serviceMethod1(String arg1, int arg2, int arg3) { 
 
              //Hier werden 2 andere WebServices benutzt, d.h. hier steht erst mal "Client"-Code um darauf zuzugreifen:
             //Hier wird mit RPCServiceClient gearbeitet und die EndPointReferences zu den beiden Services geholt

            //Diese Services werden dann für die eigene Logik benutzt
     }

     public void serviceMethod2(String arg1, String arg2) { 
 
              //Hier werden 2 andere WebServices benutzt, d.h. hier steht erst mal "Client"-Code um darauf zuzugreifen:
             //Hier wird mit RPCServiceClient gearbeitet und die EndPointReferences zu den beiden Services geholt

            //Diese Services werden dann für die eigene Logik benutzt
     }
}


Also sehr simpel. Wenn ich den WebService jetzt so deploye und mit nem eigenen Client darauf zugreifen will, dann geht das eben schief, mit der Meldung aus dem Original-Posting. Die beiden WebServices die ich hier verwende, funktionieren aber korrekt, was ich auch schon mit nem eigenen Client getestet habe.

Und das lustige an der ganzen Geschichte ist halt das, dass ich in dieser Klasse mal noch ne main-Methode hinzugefügt habe, und von der main-Methode die beiden service-Methoden aufrufe. Also ich habe die Klasse als normales POJO aus Eclipse heraus benutzt und eben nicht als Axis-Webservice deployt. Und da funktioniert auch alles. Aber sobald ich daraus ein .aar mache und das deploye gehts eben nicht, wenn ich dann von nem andern Client aus eine der beiden Methoden aufrufen will....

Verständlich? ;)
 
G

Gast

Gast
ich hatte auch mal etwas ähnliches programmiert. Allerdings hatte mein Webservice dauernd die Klassen des Webservice-Clients nicht gefunden. Probier mal alle deine Klassen/jar-Dateien aus dem aar raus zu geben und nur ins WEB-INF/lib zu stellen. Was schmeißt denn dein Tomcat für Fehler?
 

nEp

Aktives Mitglied
Also in dem lib-Verzeichnis hab ich ja wie gesagt schon alle benötigten JARs. Oder wie meinst du das?

Und Tomcat/Axis schmeissen leider gar keine Fehler...
 
D

doZi

Gast
Hallo nEp,

Ich hatte gerade den selben Fehler in meinem WS Projekt.
Du musst in deinem WS (der auf die beiden anderen WebServer zugreift) folgendes setzten.

options.setAction("x") x steht für den Metodennamen des anderen WS.


Hier ein Codeauszug um das ganze ein wenig zu verdeutlichen:

RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/...");
options.setAction("x");
options.setTo(targetEPR);


setAction musst du für jeden Methodenaufruf neu setzten.

Dann sollts auch mit dem Herrn Reich klappen ;))

Gruss,

doZi
 

nEp

Aktives Mitglied
Uff, vielen dank :)
Genau daran lags bei mir. Jetzt klappt alles reibungslos.

Und ja, jetzt klappts mit dem Reich :D
Also danke nochma
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Axis2 Webservice mit Client Zertifikat Authentifizierung Netzwerkprogrammierung 3
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
R per Webservice mit GLS kommunizieren Netzwerkprogrammierung 2
L HTTP Restful Webservice Respone mit Null Body Netzwerkprogrammierung 3
H HTTP Rest Webservice mit Swagger Netzwerkprogrammierung 3
L Zugriffprobleme Client - Webservice AspenTechnology Netzwerkprogrammierung 0
T HTTP Eintragen in Webservice Netzwerkprogrammierung 1
S Webservice - Server Netzwerkprogrammierung 0
O Webservice: Telefonbuch (DB) Netzwerkprogrammierung 10
M Einfaches REST Webservice Beispiel Netzwerkprogrammierung 5
C Android: Json-POST Request zu REST Webservice Netzwerkprogrammierung 2
R Webservice und Bilder Netzwerkprogrammierung 29
C Webservice Frage Netzwerkprogrammierung 2
T Webservice als Client aufrufen Netzwerkprogrammierung 2
G Threads mit einem WebService Netzwerkprogrammierung 4
M Map über Webservice übertragen Netzwerkprogrammierung 3
K Programm als Webservice laufen lassen Netzwerkprogrammierung 5
S WebService, 4-stelliger String (Jahr) als Calendar Netzwerkprogrammierung 5
K Webservice: JAX-WS mit Tomcat5.x Netzwerkprogrammierung 2
K Webservice (Annotation) Netzwerkprogrammierung 2
H ArrayList via WebService übertragen Netzwerkprogrammierung 3
R Java webservice Serverpush Netzwerkprogrammierung 4
N NullPointerException in WebService Netzwerkprogrammierung 4
J Stubs für SOAP-Webservice generieren. Ich bekomme es einfach nicht hin... Netzwerkprogrammierung 3
O Webservice ohne Eclipse laufen lassen Netzwerkprogrammierung 3
C Webservice, ArrayList übergeben Netzwerkprogrammierung 3
5 Webservice max. mit 5 Clients möglich Netzwerkprogrammierung 10
G .Net Webservice in Java ansprechen Netzwerkprogrammierung 3
K Axis2 Webservice Netzwerkprogrammierung 7
G Problem mit Webservice Netzwerkprogrammierung 5
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
C Webservice von Java-Application aufrufen Netzwerkprogrammierung 3
G Webservice: Xml-Rpc: problem mit 2 webservices Netzwerkprogrammierung 3
G Webservice gibt das falsche aus - Wieso Netzwerkprogrammierung 5
F Socket Socket in anderen Methoden Netzwerkprogrammierung 1
T Textdatei in bestimmtes Verzeichnes auf anderen Pc kopieren Netzwerkprogrammierung 4
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
Rudolf Socket An welchen Port sendet ein Mailserver zu einem anderen Mailserver Netzwerkprogrammierung 8
A java im netzwerk anderen rechner runterfahren Netzwerkprogrammierung 3
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
R Über Java anderen Gateway nutzen Netzwerkprogrammierung 10
J Mit der File Api Dateien von anderen Rechnern lesen ? Netzwerkprogrammierung 3
J JavaMail Exception bei senden an anderen Server. Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben