IllegalArgumentException when invoking axis2-webservice with client

M

MC

i just wrote a webservice using the axis2-framework .. the service can
be found here:
---------------------------------------------------
package de.testService;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class TestService {

public Connection con = null;
TransportContainer tc = new TransportContainer();
Vector v = new Vector();

public final void connection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/travelagent", "root", "");
}

public TransportContainer getHotels(String table) {
try {
connection();
String sql = "SELECT * FROM " + table;
PreparedStatement pStmt = con.prepareStatement(sql);
ResultSet rs = pStmt.executeQuery();
while (rs.next()) {
v.addElement(new Hotel(rs.getString(2), rs.getString(3), rs
.getString(4), rs.getString(6), rs.getInt(5)));
}
} catch (Exception e) {
e.printStackTrace();
}
tc.setData(v);
return tc;

}

}
---------------------------------------------------

the service uses a class called TransportContainer, which contains the
data that should be send from the service to the client. this class can
be found here:

---------------------------------------------------
package de.testService;

import java.util.Vector;

public class TransportContainer {

public TransportContainer() {

}

public Vector v;

public void setData(Vector data) {
this.v = data;
}

public Vector getData() {
return this.v;
}
}
---------------------------------------------------

to invoke the service, i wrote a client which can be found here:

---------------------------------------------------
package de.wsTester;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

import de.testService.*;

public class TestClient {

public static void main(String[] args) throws AxisFault {

RPCServiceClient sender = new RPCServiceClient();
Options options = sender.getOptions();

EndpointReference targetERP = new EndpointReference(
"http://localhost:8080/axis2/services/testService");
options.setTo(targetERP);

QName opGetHotels = new QName("http://testService.de",
"getHotels");

String table = "hotels";
Object[] opArgs = new Object[] { table };

Class[] returnTypes = new Class[] { TransportContainer.class };
Object[] response = sender.invokeBlocking(opGetHotels,
opArgs,returnTypes);
}

}
---------------------------------------------------

when i start the client, i get the following exception:

---------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: argument
type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:391)
at
org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:655)
at
org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:603)
at
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:535)
at
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:103)
at de.wsTester.TestClient.main(TestClient.java:29)
---------------------------------------------------

thx to soapmonitor, i can see that the service return the expected
data-structure

---------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getHotelsResponse xmlns:ns="http://testService.de">
<ns:return xmlns:ax21="http://testService.de/xsd"
type="de.testService.TransportContainer">
<ax21:data type="de.testService.Hotel">
<ax21:hotelCity>München</ax21:hotelCity>
<ax21:hotelCode>AX001</ax21:hotelCode>
<ax21:hotelName>Axis2 Grand Hotel</ax21:hotelName>
<ax21:numOfStars>5</ax21:numOfStars>
</ax21:data>
<ax21:data type="de.testService.Hotel">
<ax21:hotelCity>Hamburg</ax21:hotelCity>
<ax21:hotelCode>AX010</ax21:hotelCode>
<ax21:hotelName>Axis2 Plaza</ax21:hotelName>
<ax21:numOfStars>4</ax21:numOfStars>
</ax21:data>
<ax21:data type="de.testService.Hotel">
<ax21:hotelCity>Unterammergau</ax21:hotelCity>
<ax21:hotelCode>AX050</ax21:hotelCode>
<ax21:hotelName>Achsenhütte</ax21:hotelName>
<ax21:numOfStars>1</ax21:numOfStars>
</ax21:data>
</ns:return>
</ns:getHotelsResponse>
</soapenv:Body>
</soapenv:Envelope>
-------------------------------------------------

whats wrong with my code? i would be thankful for any advice or hints on
how to improve my code.

greetings,

matthias :):)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,708
Latest member
SherleneF1

Latest Threads

Top