Axis2 Webservice

Status
Nicht offen für weitere Antworten.
K

Kehoan

Gast
Mein Webservice (Axis2 v 1.3) dient als Middleware zwischen einem SAP -und einem Java-System. Der Datentransfer erfolgt, indem ein SAP-Client eine WSDL-Operation meines Webservices aufruft. Diese WSDL-Operation startet wiederum ein RMI-Client, der Daten vom Server des Java-Systems anfragt. Ist der RMI-Anfrage erfolgreich, werden die Daten über ein Rückgabewert der WSDL-Operation an den SAP-Client zurück gegeben.

Zu der Aufgabenstellung habe ich zwei Probleme:

1. Die Sourcen des RMI-Clients sind im Webservice im aar-Archive eingebunden. Wird der Webservice deployed und ausgeführt, werden diese Sourcen (als Jar-Files) nicht erkannt. Das Problem ist, dass man diese Sourcen im Server (tomcat) im Axis Order unter lib nochmal kopieren muss. Damit hätte ich kein Problem, jedoch kommt es zu Konflikten, da ich für mein RMI-Client zwei Liberies benutze, die im Axis Ordner schon vorhanden sind, jedoch in unterschiedlichen Versionen. Wie bringe ich dazu, dass der tomcat meine Liberies im aar-Archive bentutzt? Das ganze soll irgendwie mit classLoader funktionieren?

2. Kann man eigentlich eine Funktion im Webservice einbauen, der beim Deployment aufgerufen wird, z.b. die main-Funktion? Ich möchte, dass mein RMI-Client nur beim Deployen einmal über eine Funktion gestartet wird.

Bitte um Hilfe!
 

Niki

Top Contributor
Ich hatte ähnliches Problem mit axis2 und ClassCastExceptions. Probier mal alle Klassen/jar-Dateien aus dem aar raus zu geben und nur ins WEB-INF/lib zu stellen. Bei mir hat das den Fehler behoben. Anscheinend verwendet axis2 einen eigenen classloader und dadurch dürfte es zu komischen Problemen kommen.
Versteh ich dich richtig das du deine rmi-funktion nur einmal ausführen willst? wenn dem so ist gib sie in einen static block deines web-services. Dann wird sie beim laden der Klasse aufgerufen. Das Ergebnis kannst du in statischen Attributen halten (wenn das so gewünscht ist)
 
K

Kehoan

Gast
Hi Niki, danke für die Info.

genau das habe ich gemacht; alle Jars aus dem aar gelöscht und diese in WEB-Inf/lib kopiert. Jedoch gibt es in diesem Verzeichnis libs (xerxersimpl und xml-apis), die ich auch verwende, jedoch in einer anderen Version und tomcat kann da nicht unterscheiden, welche lib er nehmen soll. Bei Webstart kenne ich, dass die libs in einer jnlp definiert werden können. Gibt es sowas ähnliches für axis?

was meinst du genau mit einem static-Block? - eine static Funktion? Und wird sie beim Deployen einmal aufgerufen?
 

Niki

Top Contributor
wenn du Bibliotheken in unterschiedlichen Versionen im tomcat herum kugeln hast wirst du immer wieder in Probleme rein laufen. Du solltest irgendwo die Bibliotheken löschen und einfach im common/lib vom tomcat rein geben. diese bibliotheken werden für alle webapps geladen (soweit ich weiß).

was meinst du mit beim deployen aufrufen? beim deployen wird noch nichts ausgeführt. Wenn du möchtest dass deine rmi funktion nur einmal aufgerufen wird kannst du es soch machen:

Code:
public class MyWebServiceImpl implements....{

  private static Object rmiReturnValue....

 static{
    try{
      ....Naming.lookup("//host:port/servicename");....

      //hier halt das rmi zeugs
    }catch(Exception ex){
      ex.printStackTrace();
    }
  }

  public Object myServiceMethod(){
    return rmiReturnValue;
  }
}

Da wird der rmi-Zugriff nur einmal beim Laden der Klasse aufgerufen.
 
K

Kehoan

Gast
danke, dein Beispiel den RMI-Client in die static-Funktion aufzurufen, hat funktioniert. Nur die doppelten libs bekomme ich noch immer nicht im Griff. Meine ganzen Libs für den RMI-Client (ca. 90 MB) habe ich common/lib kopiert; das hat leider nicht funktioniert. Anscheinend werden diese nicht für alle webapps geladen. Hast du schon mal Erfahrung, die libs in das aar-Archive zu packen; in der Literatur soll das ohne Probleme funktionieren
 

Niki

Top Contributor
Ich hab bei meinem axis2-Service alle libs und Klassen rausgehaut und ins WEB-INF/lib von der webapp kopiert. Das aar hab ich dann einfach in WEB-INF/services Verzeichnis entpackt. Also ein Verzeichnis "myservice" unter WEB-INF/services. Darunter befindet sich dann nur das META-INF/services.xml File.
 
W

Willi.Firulais

Gast
Ich habe ähnliche Probleme. Ich versuche (derzeit verzweifelt) ein Axis2 WebService zu erstellen welches mittels JPA/Hibernate auf eine Oracle Datenbank zugreift. Verstehe ich dich richtig:

In die .aar würdes du nur die Web Servcie Definition geben (myservice.aar):
Code:
jboss/server/deploy/axis2.war/WEB-INF/services/myservice.aar

Im myservice.aar ist folgendes enthlten:
Code:
jboss/server/deploy/axis2.war/WEB-INF/services/myservice.aar/META-INF/MANIFEST.MF
jboss/server/deploy/axis2.war/WEB-INF/services/myservice.aar/META-INF/services.xml

In der services.xml definierst Du das POJO welches als Web Service nach aussen zur Verfügung stehen soll.
Code:
…
<parameter name="ServiceClass" locked="false">company.project.service.CableService</parameter>
…

In einer anderen Bibliothek z.B. myservice.war sind die Klassen (z.B. /company/project/service/CableService.class) enthalten. Die Bibiotheken die von dem Service POJO (CableService.class) benötigt warden würdet Ihr unter

Code:
jboss/server/deploy/myservice.war/WEB-INF/lib/ (.jar von JDBC treibern und hibernate)

oder

Code:
jboss/server/default/lib/ (.jar von JDBC treibern und hibernate)

geben?

Jegliche Erfahrungswerte, Verweise und Hilfe willkommen. Vielen Dank für jeglichen Ansatz einer Lösung.
 
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
M ClassLoader für Axis2 setzen Netzwerkprogrammierung 15
T Java2Wsdl mit Axis2 Netzwerkprogrammierung 6
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
P Problem Axis2 <-> JAX-WS (RPC) Netzwerkprogrammierung 1
L axis2 + jni = libXY.so already loaded in another classloader Netzwerkprogrammierung 2
U Axis2 SimpleHotel Netzwerkprogrammierung 11
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
R 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
N Von WebService auf anderen WebService zugreifen? Netzwerkprogrammierung 8
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

Ähnliche Java Themen

Neue Themen


Oben