I posted this
on axis-user yesterday and haven't heard anything so I hoping that it was the
wrong forum. Here is the issue. I
have a "Bean" that I am passing to the call object as an argument to my
service. The call never makes it out of the client VM. The code is
in the main method of a test client class and looks like
this:
Options options = new
Options(args);
String message = "Default message";
if (options.isValueSet('m') != null )
{
message = options.isValueSet('m');
}
Environment env = new Environment();
env.setProperty(env.REALMID,"1");
env.setProperty(env.USERNAME,"me");
String message = "Default message";
if (options.isValueSet('m') != null )
{
message = options.isValueSet('m');
}
Environment env = new Environment();
env.setProperty(env.REALMID,"1");
env.setProperty(env.USERNAME,"me");
Service service = new
Service();
Call call = (Call) service.createCall();
QName qn = new QName("echoWSjava", "Environment" );
call.registerTypeMapping(Environment.class, qn,
BeanSerializerFactory.class,
BeanDeserializerFactory.class);
QName sqn = new QName("echoWSjava", "String" );
String result;
Call call = (Call) service.createCall();
QName qn = new QName("echoWSjava", "Environment" );
call.registerTypeMapping(Environment.class, qn,
BeanSerializerFactory.class,
BeanDeserializerFactory.class);
QName sqn = new QName("echoWSjava", "String" );
String result;
call.setTargetEndpointAddress( new
java.net.URL(options.getURL()));
call.setOperationName( new QName("echoWSjava","echoMessage"));
call.addParameter("arg1",sqn,ParameterMode.IN);
call.addParameter("arg2",qn,ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
result = (String) call.invoke(new Object[] { message,env } );
call.setOperationName( new QName("echoWSjava","echoMessage"));
call.addParameter("arg1",sqn,ParameterMode.IN);
call.addParameter("arg2",qn,ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
result = (String) call.invoke(new Object[] { message,env } );
When Axis tries to
get the serializer it falls in the
getSerializerAs method of BaseSerializerFactory and the tests in that method end
up trying call newInstance on the BeanSerializer class. There is no
default constructor in BeanSerializer and a "java.lang.InstantiationException:
org.apache.axis.encoding.ser.BeanSerializer" exception is thrown (which is caught at some
point and eaten so you never see the error unless you go edit Axis code and
recompile, but that is another issue altogether). Am I doing something
wrong in my code? The Environment class I am using works fine with Apache
SOAP 2.3's BeanSerializer.
Thanks
Joe