Hi,
I wanted to use
BeanSerializer and had only problems.
So I had a look
at the example 5 (BeanService) of axis userguide and it works when a
serialized Bean-Instance was sent to server.
Then I extended a
method to Service that should give me an instance of the Order-Bean, but this
doesn't work!
Has anybody seen
this problem? I think this is a BUG of axis, isn't it?
Regards
Christian
If anybody wants to
view my changes, here they are:
BeanServicve.java:
public Order getOrder()
{
Order order = new Order();
order.setCustomerName("Glen Daniels");
order.setShippingAddress("275 Grove Street, Newton, MA");
String [] items = new String[] { "mp3jukebox", "1600mahBattery" };
int [] quantities = new int [] { 1, 4, 5 };
order.setItemCodes(items);
order.setQuantities(quantities);
return order;
}
{
Order order = new Order();
order.setCustomerName("Glen Daniels");
order.setShippingAddress("275 Grove Street, Newton, MA");
String [] items = new String[] { "mp3jukebox", "1600mahBattery" };
int [] quantities = new int [] { 1, 4, 5 };
order.setItemCodes(items);
order.setQuantities(quantities);
return order;
}
Client.java:
Service service = new
Service();
Call call = (Call) service.createCall();
QName qn = new QName( "urn:BeanService", "Order" );
Call call = (Call) service.createCall();
QName qn = new QName( "urn:BeanService", "Order" );
call.registerTypeMapping(Order.class,
qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, qn));
//String result;
Order result;
try {
call.setTargetEndpointAddress( new java.net.URL(options.getURL()) );
//call.setOperationName( new QName("OrderProcessor", "processOrder") );
call.setOperationName( new QName("OrderProcessor", "getOrder") );
//call.addParameter( "arg1", qn, ParameterMode.IN );
call.addParameter( "arg1", qn, ParameterMode.OUT );
call.setReturnType( qn );
new org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, qn));
//String result;
Order result;
try {
call.setTargetEndpointAddress( new java.net.URL(options.getURL()) );
//call.setOperationName( new QName("OrderProcessor", "processOrder") );
call.setOperationName( new QName("OrderProcessor", "getOrder") );
//call.addParameter( "arg1", qn, ParameterMode.IN );
call.addParameter( "arg1", qn, ParameterMode.OUT );
call.setReturnType( qn );
//result = (String) call.invoke( new Object[] { order }
);
//System.out.println(result);
result = (Order) call.invoke( new Object[] {} );
System.out.println(result.getCustomerName());
} catch (AxisFault fault) {
System.out.println("Error : " + fault.toString());
}
//System.out.println(result);
result = (Order) call.invoke( new Object[] {} );
System.out.println(result.getCustomerName());
} catch (AxisFault fault) {
System.out.println("Error : " + fault.toString());
}
deploy.wsdd
<parameter name="allowedMethods"
value="*"/>