axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Heitzso <heit...@bellsouth.net>
Subject RE: href, mozilla soap, and custom serializers
Date Tue, 04 Jun 2002 19:10:21 GMT
My client code is running in a Mozilla browser and 
doesn't touch the Axis environment except as a vanilla 
web service.  So touching the stub doesn't help me. 

On the server side my class is, in theory, axis unaware 
or web-server-container neutral.  So my assumption is that 
the PROP_DOMULTIREF property needs to be set in the 
server side setup in the wsdd file, but I'm not seeing 
anything in doc that would indicate how to do this. 
(may not be reading it right). 

Since it's the bean serializer mechanism that I want 
to turn this property off in, I'ld expect to be able to 
do something like ... 
<beanMapping Qname="datamodelNS:SelectionNodeSet"
xmlns:datamodelNS="urn:ferrett"
doMultiRefs="false" 
languageSpecificType="java:org.thedataweb.service.ferrett.datamodel.SelectionNodeSet" 
/> 


I'll try throwing in axis code server class side 
(i.e. my FerrettService class that's providing the method 
that's breaking because it's returning a bean that's being 
href'ed) as you suggest and see what happens.  Though 
curious what happens to the state of that property after 
I toggle in a running instance. 

Heitzso 


On Tue, 2002-06-04 at 14:31, St-Germain, Sylvain wrote: 
> Isn't this trick trigger that both ends be inline?  
> Would make sense to me...  But I do not remember, give it a try before
> digging too deep...
> 
> Have a look at ServiceContext.getCurrentContext() that may give you some
> hints.
> 
> Sylvain.
> 
> 
> -----Original Message-----
> From: Heitzso [mailto:heitzso@bellsouth.net]
> 
> Thank you for the clue.  However I need to set this
> server side.  I'm grepping the code now and digging 
> around, but if you're aware of how to quickly set
> PROP_DOMULTIREFS false server side I'ld appreciate
> the info.
> 
> On Tue, 2002-06-04 at 13:03, St-Germain, Sylvain wrote:
> > Try puttin this line in your Stub's createCall method.
> > 
> > import org.apache.axis.AxisEngine;
> > call.setOption(AxisEngine.PROP_DOMULTIREFS, new Boolean(false));
> > Sylvain.
> > 
> > -----Original Message-----
> > From: Heitzso [mailto:heitzso@bellsouth.net]
> > 
> > Mozilla 1.0rc3 SOAP doesn't handle hrefs. I recoded a java 
> > bean (returned from web service)
> > to only contain simple data types and arrays of simple
> > data types but axis still uses a href even though 
> > nothing is gained by it.
> > 
> > I'm trying _hard_ to code a custom serializer for my
> > bean to avoid the href but my serializer/axis setup
> > breaks with a null pointer exceptions.  I'm following
> > all of the doc and the encoder sample app, but it's
> > still a nogo.  null pointer coming out of (beta2):
> > 	ServiceDesc.java 688 (647, 628, 507, 488).
> > Line 688 in ServiceDesc.java is:
> >  operation.setReturnType(tm.getTypeQName(method.getReturnType()));
> > 
> > My wsdd element that's triggering the null pointer:
> > <typeMapping xmlns:ns="urn:ferrett" qname="ns:SelectionNodeSet"
> > type="java:org.thedataweb.service.ferrett.datamodel.SelectionNodeSet"
> >
> serializer="org.thedataweb.service.ferrett.datamodel.SelectionNodeSetSeriali
> > zerFactory"
> >
> deserializer="org.thedataweb.service.ferrett.datamodel.SelectionNodeSetDeser
> > ializerFactory"
> > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > />
> > 
> > Null pointer trigger occurs when I go to AxisServlet to just list the 
> > exposed classes/methods.
> > 
> > My ser/deser factories follow the sample code exactly.  
> > 
> > The ser code:
> > 
> > public class SelectionNodeSetSerializer implements Serializer {
> > 	
> >  public static final String LENGTH = "length";
> >  public static final String NAMES = "names";
> >  public static final String IDS = "ids";
> >  public static final String DESCRIPTIONS = "descriptions";
> >  public static final String TERMINALS = "terminals";
> >  public static final QName myTypeQName = new QName("urn:ferrett",
> > "SelectionNodeSet");
> >  public SelectionNodeSetSerializer() {}
> >  public void serialize(QName name, Attributes attributes, Object value,
> > SerializationContext context) throws IOException {
> >    if (! (value instanceof SelectionNodeSet)) {
> >       throw new IOException(.....);
> >    }
> >    SelectionNodeSet selectionNodeSet = (SelectionNodeSet) value;
> >    context.startElement(name, attributes);
> >    context.serialize(new QName("urn:ferrett", LENGTH), null, new
> > Integer(selectionNodeSet.length), Integer.class);
> >    //ArraySerializer arraySerializer = new ArraySerializer();
> >    //arraySerializer.serialize(new QName("", IDS), null, 
> > selectionNodeSet.ids, context);
> >    //arraySerializer.serialize(new QName("", NAMES), null,
> > selectionNodeSet.names, context);
> >    //arraySerializer.serialize(new QName("", DESCRIPTIONS), null,
> > selectionNodeSet.descriptions, context);
> >    //arraySerializer.serialize(new QName("", TERMINALS), null,
> > selectionNodeSet.terminals, context);
> >    context.endElement();
> >  }
> > 	
> >  public String getMechanismType() { 
> >   return Constants.AXIS_SAX; 
> >  }
> > 	
> >  public boolean writeSchema(Types types) throws Exception {
> >   return false;
> >  }
> > =========
> > 
> > Note that I've commented out the array serializers while I sort
> > out the simplest piece -- serializing a single integer.


Mime
View raw message