2011-10-10 12 views
5

मैं अपाचे सीएक्सएफ 2.4.2 का उपयोग करता हूं और जब मैं कुछ ऑब्जेक्ट डेटाबेस से उपयोगकर्ता को वापस भेजता हूं तो मैं कुछ गुणों को छोड़ना चाहता हूं (उदाहरण के लिए, पासवर्ड)। मैं अस्थायी कक्षा बनाये बिना कैसे कर सकता हूं? क्या इसके लिए कोई टिप्पणी है?सीएक्सएफ: SOAP के माध्यम से ऑब्जेक्ट भेजे जाने पर कुछ गुणों को कैसे बाहर निकालना है?

उत्तर

10

@ tomasz-nurkiewicz टिप्पणी के अनुसार मुझे @XmlTransient एनोटेशन का उपयोग करना चाहिए। लेकिन जैसे-जैसे दस्तावेज में उल्लेख किया

डिफ़ॉल्ट रूप से, अगर एक वर्ग पर @XmlAccessorType अनुपस्थित है, और उसके सुपर वर्गों में से कोई भी @XmlAccessorType साथ टिप्पणी की जाती है, तो वर्ग पर निम्न डिफ़ॉल्ट मान लिया जाता है:

@ XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)

कहाँ XmlAccessType.PUBLIC_MEMBER मतलब यह है कि:

हर सार्वजनिक गेटर/सेटर जोड़ी और हर पु ब्लैक फ़ील्ड स्वचालित रूप से XML तक बाध्य हो जाएगा, जब तक XmlTransient द्वारा एनोटेटेड नहीं किया जाता है। फ़ील्ड्स या गेटर/सेटर जोड़े जो निजी, संरक्षित, या केवल पैकेज के लिए डिफॉल्ट हैं, केवल एक्सएमएल के लिए बाध्य हैं जब उन्हें उपयुक्त जेएक्सबी एनोटेशन द्वारा स्पष्ट रूप से एनोटेट किया जाता है।

इसलिए यही कारण है कि निजी क्षेत्र के लिए @XmlTransient उदाहरण में टॉमसज़ नर्कविचज़ से काम नहीं करता है।

1) सार्वजनिक गेटर के लिए टिप्पणी जोड़ें:

private String password; 

@XmlTransient 
public String getPassword() { 
    return password; 
} 

2) वर्ग के लिए @XmlAccessorType जोड़ें: http://old.nabble.com/@XmlTransient-ignored-td7406659.html

4

मुझे लगता है कि आप ऑब्जेक्ट-एक्सएमएल मैपिंग के लिए जेएक्सबी का उपयोग कर रहे हैं। उस स्थिति में बस उन क्षेत्रों को एनोटेट करें जिन्हें आप @XmlTransient के साथ अपनी डेटाबेस इकाई में छोड़ना चाहते हैं।

@XmlTransient 
private String password; 

हालांकि ध्यान दें कि एक दिन आपको एहसास होगा कि आप बैकएंड से अपने CXF वेब सेवा दसगुणा एक अस्थायी वर्ग की क्या ज़रूरत है मुख्य रूप से। आखिरकार आप याद रखना नहीं चाहते हैं कि डेटाबेस में कॉलम जोड़ने से तुरंत एसओएपी इंटरफ़ेस टूट जाता है ...

+0

मैं:

@XmlAccessorType(XmlAccessType.FIELD) public User { @XmlTransient private String password; } 

पर फाउंड देयर ठीक करने के दो संभव तरीके हैं मुझे यकीन नहीं है कि मैं क्या उपयोग करता हूं, क्योंकि मैंने सीएक्सएफ का उपयोग करने के लिए केवल 'cxf-rt-frontend-jaxws' और' cxf-rt-transports-http' को 'pom.xml' में जोड़ा है। लेकिन मुझे अपने डब्ल्यूएआर पैकेज में 'जैक्सबी-इंप-2.1.13.jar' और' cxf-rt-databinding-jaxb-2.4.3.jar' दिखाई देता है, ऐसा लगता है कि आप सही हैं। मैंने भाग्य के बिना '@ एक्सएमएल ट्रांसिएंट' का उपयोग करने की कोशिश की :(मैंने पूरी कक्षा में '@ एक्सएमएल रूट एलीमेंट' भी जोड़ा, लेकिन कुछ भी नहीं बदला। क्या आपके पास एक और टिप है? –

+0

हाय फिर से! मैं गुगल रहा हूं और थोड़ा शोध करता हूं और पाया कि मेरी समस्या का समाधान कैसे करें मेरा अपडेट देखें। इसके अलावा मैं आपका जवाब ऊपर उठाता हूं क्योंकि इससे मुझे सही समाधान खोजने में मदद मिलती है। धन्यवाद! –

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

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