Hallo liebe Java-Freunde
Momentan arbeite ich mich in SOAP und Axis2 ein.
Habe mir dazu das Buch "Java Web Services mit Apache Axis2" gekauft. Dieses habe ich Schritt für Schritt durchgearbeitet (bis SimpleHotel) und das Beispiel SimpleHotel mitgemacht. Dieses habe ich sowohl in den Repository\services Ordner von Axis als auch in den axis2\Web-Inf\services Ordner von Tomcat in Form eines .aar Archivs abgelegt. Der Service und die Funktionen werden auch über axis2 und tomcat als laufend angezeigt, wenn ich mir die Services über die Weboberfläche anzeigen lasse.
Nun habe ich die Beispielanwendung (Client) vom Buch geschrieben und versucht diese sowohl mit dem StandalonServer von Axis als auch mit Tomcat laufen zu lassen.
Das ergab folgenden Fehler:
Die Anwendung findet wohl meinen Service nicht...
Meine ClientAnwendung dazu sieht bis zu dieser Zeile wie folgt aus:
Die services.xml sieht folgendermaßen aus:
Wie in der services.xml zu sehen ist bietet SimpleHotelService die Operationen:
- findHotel
- getHotels
an.
Kann mir bitte einer sagen, wo ich meinen Fehler habe??
Gruß Marco
Momentan arbeite ich mich in SOAP und Axis2 ein.
Habe mir dazu das Buch "Java Web Services mit Apache Axis2" gekauft. Dieses habe ich Schritt für Schritt durchgearbeitet (bis SimpleHotel) und das Beispiel SimpleHotel mitgemacht. Dieses habe ich sowohl in den Repository\services Ordner von Axis als auch in den axis2\Web-Inf\services Ordner von Tomcat in Form eines .aar Archivs abgelegt. Der Service und die Funktionen werden auch über axis2 und tomcat als laufend angezeigt, wenn ich mir die Services über die Weboberfläche anzeigen lasse.
Nun habe ich die Beispielanwendung (Client) vom Buch geschrieben und versucht diese sowohl mit dem StandalonServer von Axis als auch mit Tomcat laufen zu lassen.
Das ergab folgenden Fehler:
Exception in thread "main" org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method findHotel
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:271)
at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:579)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
at de.axishotels.client.AxisHotelsClient.main(AxisHotelsClient.java:39)
Die Anwendung findet wohl meinen Service nicht...
Meine ClientAnwendung dazu sieht bis zu dieser Zeile wie folgt aus:
Code:
package de.axishotels.client;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.databinding.utils.BeanUtil;
import org.apache.axis2.engine.DefaultObjectSupplier;
import de.axishotels.Hotel;
import de.axishotels.RoomType;
public class AxisHotelsClient {
public static void main(String[] args1) throws AxisFault{
ServiceClient sender = new ServiceClient();
Options options = sender.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/SimpleHotelService");
options.setTo(targetEPR);
// die Operation "findHotel" soll aufgerufen werden
QName opFindHotel = new QName("http://axishotels.de/xsd", "findHotel");
//Parameter für die Operation "findHotel" definieren
String hotelCode ="AX050";
Object[] opArgs = new Object[] {hotelCode};
// OMElement mit der Request-Nachricht erzeugen
OMElement request = BeanUtil.getOMElement(opFindHotel, opArgs, null, false, null);
// Request an den Service schicken... der Aufruf erfolgt
// synchron mit dem Kommunikationsmuster IN-OUT
OMElement response = sender.sendReceive(request);
...}
}
Die services.xml sieht folgendermaßen aus:
Code:
<service>
<description>SimpleHotelService</description>
<parameter name="ServiceClass">
de.axishotels.HotelService
</parameter>
<operation name="getHotels">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="findHotel">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
</service>
Wie in der services.xml zu sehen ist bietet SimpleHotelService die Operationen:
- findHotel
- getHotels
an.
Kann mir bitte einer sagen, wo ich meinen Fehler habe??
Gruß Marco