tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
0
ZUGRIFFE
210
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cattiva Cattiva ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    4
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    public class LogEvent implements Serializable{
        
        private Object message;
        
     
        public Object getMessage() {
            return message;
        }
     
        public void setMessage(Object message) {
            this.message = message;
        }
    }

    Client Main
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    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 ~.~
    Geändert von Cattiva (18.07.11 um 14:32 Uhr)
     

Ähnliche Themen

  1. axiom 49 m-audio
    Von goeki im Forum Musik & Musiker
    Antworten: 0
    Letzter Beitrag: 07.11.09, 05:24
  2. serialize?
    Von Maik20 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.08.08, 11:02
  3. AXIOM mit Java 1.4
    Von Niklaus Bucher im Forum Java
    Antworten: 4
    Letzter Beitrag: 11.12.07, 13:43
  4. serialize und unserialize
    Von hoctar im Forum PHP
    Antworten: 5
    Letzter Beitrag: 12.07.07, 17:22
  5. Doc::Serialize
    Von pyro2222 im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 28.10.04, 08:50

Stichworte