2011-04-25 9 views
9

मैं एक साधारण एक्सएमएल-आरईएसटी स्ट्रीम को पार्स करने के लिए जेएक्सबी 2.2.2 का उपयोग कर रहा हूं।जेएक्सबी-अनमारशलिंग के दौरान ऑब्जेक्ट फैक्ट्री भूमिका क्या है?

JAXBContext jc = JAXBContext.newInstance("com.example.entities"); 
Unmarshaller u = jc.createUnmarshaller(); 
r = (Response)u.unmarshal(inputStream); 

ObjectFactory वर्ग:

@XmlRegistry 
public class ObjectFactory { 

    public Response createRsp() { 
     return new Response(); 
    } 
} 

रिस्पांस वर्ग: इस कोड का टुकड़ा है

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name="rsp") 
@XmlType 
public class Response { ... } 

"com.example.entities" ObjectFactory वर्ग या JAXB शामिल होना चाहिए। सूचकांक। मैं कुछ pojo प्रारंभिक निर्णय लेने के लिए ऑब्जेक्ट फैक्ट्री क्लास का उपयोग करना चाहता हूं, लेकिन इन वर्गों का कभी भी उपयोग नहीं किया जाता है: प्रतिक्रिया वर्ग हमेशा कक्षा.न्यू इंस्टेंस() द्वारा तुरंत चालू किया जाता है। क्या इसमें कुछ गड़बड़ है?

उत्तर

10

आप @XmlType एनोटेशन का लाभ उठाने कर सकते हैं कि ऑब्जेक्ट का निर्माण होगा नियंत्रित करने के लिए:

@XmlType(factoryClass=ObjectFactory.class, factoryMethod="createRsp") 
public class Response { 
} 

अधिक जानकारी

+1

मेरी भलाई, मैंने पिछले कई घंटों में सुराग के लिए व्यर्थ दिखने के लिए व्यतीत किया कि मेरे फैक्ट्री विधि को काम करने के लिए कैसे, जब तक मैं इसे पढ़ूं। धन्यवाद! –

1

ObjectFactory वर्ग XJC द्वारा उत्पन्न के लिए कंपाइलर फैक्ट्री क्लास के लिए उपयोगी नहीं है और factoryMethod @XmlType एनोटेशन क्योंकि फैक्ट्री मोड एक स्थैतिक नो-एर्ग विधि होना चाहिए और एक्सजेसी उदाहरण विधियों को उत्पन्न करना चाहिए।

संबंधित मुद्दे