Serialize/Deserialize von apache axiom OMElementen

Cattiva

Grünschnabel
Hallo zusammen,

ich bin zur Zeit dabei mich in Webservices einzuarbeiten und nun an einen Knackpunkt gelangt. Um vorzugreifen: Mein Problem liegt beim Serialisieren/Deserialisieren eines org.apache.axiom.om.OMElement.
Der Webservice besteht aus einem Simplen Service, der ein OMElement entgegennimmt und es zu einer Bean deserialisieren soll. Das OMElement wurde dabei natürlich vom Client von einer Bean aus serialisiert.
Leider habe ich nun ein Problem, da das Deserialisieren nicht klappt. Aus welchen Gründen auch immer.

Hier der Code:

Service
Code:
public OMElement handleLogEvent(OMElement element) {

		System.out.println("Reading " + element.getLocalName() + " element");
		// element.detach();

		System.out.println(element.getLocalName());
		System.out.println(element.getFirstElement().toString());
		System.out.println(element.getFirstElement().getFirstElement()
				.getLocalName());

		LogEvent logEvent;
		try {


			logEvent = (LogEvent) BeanUtil.deserialize(LogEvent.class, element.getFirstElement(),
					new DefaultObjectSupplier(), null);

			System.out.println("testAusgabe: " + logEvent.getMessage());
			System.out.println(element.getFirstElement().toString());
		} catch (AxisFault e) {
			e.printStackTrace();
		}


		return element;
	}

Client Verpack/Sende Methode

Code:
private void wrapAndSendLog(LoggingEvent event) {
		try {

			OMFactory fac = OMAbstractFactory.getOMFactory();
			

			OMNamespace omNs2 = fac.createOMNamespace(
					"http://wtp.axis2testing.xxx.de", "logTest2");

			LogEvent logEvent = new LogEvent();
			logEvent.setMessage(event.getMessage());

			
			XMLStreamReader reader = BeanUtil.getPullParser(logEvent);
			StreamWrapper parser = new StreamWrapper(reader);
			OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory
					.createStAXOMBuilder(OMAbstractFactory.getOMFactory(),
							parser);			
			
			OMElement element = stAXOMBuilder.getDocumentElement();

			OMElement method2 = fac.createOMElement("handleLogEvent", omNs2);
			OMElement value2 = fac.createOMElement("element", omNs2);
			value2.addChild(element);
			method2.addChild(element);

			sender.sendReceive(method2);
			


		} catch (AxisFault e) {
			e.printStackTrace();
		}
	}

Bean
Code:
public class LogEvent implements Serializable{
	
	private Object message;
	

	public Object getMessage() {
		return message;
	}

	public void setMessage(Object message) {
		this.message = message;
	}
}

Client Main
Code:
public class Main {

	private static EndpointReference targetEPR = new EndpointReference(
			"http://localhost:8080/Axis2Testing/services/SimpleService");

	private static Logger logger = Logger.getLogger(Main.class);

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 try {

		Options options = new Options();
		options.setTo(targetEPR);

		options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

		ServiceClient sender = new ServiceClient();
		sender.setOptions(options);
		SimpleServiceClientLog sCL = new SimpleServiceClientLog(sender);

		PatternLayout layout = new PatternLayout(
				"%d{ISO8601} %-5p [%t] %c: %m%n");
		sCL.setLayout(layout);

		logger.setLevel(Level.ALL);
	
		logger.addAppender(sCL);

		logger.log(Level.INFO, "InfoTest");
		logger.log(Level.FATAL, "FatalTest");


		} catch (AxisFault e) {

			e.printStackTrace();
		}

	}

}

Egal wie ichs anstelle und probiere, kriege ich die Bean über das deserialize nicht wieder, obwohl im OMElement eigentlich das steht, was auch drin stehen sollte.
Ich bekomme zwar keine Exception, aber halt auch nicht das was ich haben möchte. Ich noch sehr am Anfang mit Webservices, daher wirds sicher nur nen ziemlich dummer Fehler sein, der mich leider ziemlich nervt.
Ich hoffe ihr könnt mir irgendwie weiterhelfen und sagen was ich hier falsch mache oder was man alternativ tun könnte.
Ich benutze axiom 1.2.11 und axis2 1.5.4

lg
Cattiva

€: String statt Object in Bean und schon gehts ~.~
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück