You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by babloosony <ba...@gmail.com> on 2005/02/26 15:54:29 UTC

unable marshal XML representation to string in memory - please help

Hi All,

I have below classes and I am trying to return Forecast class object
as a return type of a web service method that is  exposed using AXIS
1.2 RC2 and JiBX :


Temperature.java
-------------------------------------------------------------------------------
import java.io.*;

public class Temperature implements Serializable {
	String temp = "35";

    public Temperature() {}

    public void setTemp(String temp) {
        this.temp = temp;
    }
    public String getTemp() {
        return temp;
    }
}
-------------------------------------------------------------------------------



Forecast.java
-------------------------------------------------------------------------------
import java.io.*;

public class Temperature implements Serializable {
	String temp = "35";

    public Temperature() {}

    public void setTemp(String temp) {
        this.temp = temp;
    }
    public String getTemp() {
        return temp;
    }
}
-------------------------------------------------------------------------------




I am using JiBX to write a JiBX Serializer for AXIS 1.2 RC2 like below :


public class JibxSerializer implements Serializer {
	....

    public JibxSerializer(Class clas, QName qname, IMarshallingContext mctx) {
		...
    }

    public void serialize(QName name, Attributes attrs, Object value,
SerializationContext sctx) throws IOException {
		...
		
        try {
            IBindingFactory ifact =
BindingDirectory.getFactory(value.getClass());
            IMarshallingContext mctx = ifact.createMarshallingContext();
            mctx.setOutput(swriter);
            ((IMarshallable)value).marshal(mctx);
            mctx.endDocument();
            sctx.writeString(swriter.toString());
        }
        catch (JiBXException e) {
            swriter.close();
            throw new IOException("error in JiBX serialization: " +
e.getMessage());
        }
        
    }

    public String getMechanismType() {
		...
    }

    public Element writeSchema(Class javaType, Types types) throws Exception {
		...
    }
}


Now my problem is, at this line "((IMarshallable)value).marshal(mctx)"
in JibxSerializer's  serializer() method of above code, I am getting
an JiBXException and a fatal error saying
"The following exception was logged org.jibx.runtime.JiBXException:
Collection item of type java.lang.String has no binding defined"
	at JiBX_MungeAdapter.JiBX_SparePartPriceSession_binding_marshal_1_0()
	at Forecast.JiBX_SparePartPriceSession_binding_marshal_1_0(Forecast.java)
	at JiBX_SparePartPriceSession_bindingForecast_access.marshal()
	at Forecast.marshal(Forecast.java)


The resulting string that is to be written to output is below :
<forecast xmlns="http://ws.gle.com/schemas/axis/appb" hi="0" low="0"
precip="0"><zip>343434</zip><city>Campbell</city><state>CA</state><date>April
11, 2003</date><forecast>20 percent chance of
rain.</forecast><temp><temp>35</temp></temp>


All the usual configuration of registering all my custom types with
TypeMapping element and JiBX (De)Serializers  has been done in my
AXIS's server-config.wsdd. Can anyone please tell me what am I missing
here and why is this  error occurring in my server side application
server log files.




Thanks & Regards,
Kumar.