2012-05-17 9 views
6

मैं जेएक्सबी (जैक्सडब्लूएस और सीएक्सएफ की गड़बड़ी के माध्यम से) का उपयोग कर रहा हूं और बिगडिसीमल प्रकार को स्ट्रिंग (संख्या) और int (एक्सपोनेंट) में मार्शल करने का प्रयास कर रहा हूं क्योंकि अब हमारे पास एक फ्रंट एंड है जो स्थानीय मुद्दों के लिए बिगडेसीमल धन्यवाद की व्याख्या नहीं कर सकता ।मैं एक जेएक्सबी प्रोग्राम में एक्सएमएलएडाप्टर को विश्व स्तर पर कैसे लागू करूं?

मैं जो कोशिश कर रहा हूं वह है XmlAdapter का उपयोग BigDecimal को अपने स्वयं के प्रकार, BigDecimalUnScaled में बदलने के लिए करना है। जब तक मैं अपने @XmlJavaTypeAdapter एनोटेशन को सीधे मैदान पर डालता हूं तब तक यह ठीक काम करता है। हालांकि, मैं वास्तव में क्या करना चाहता हूं इसे अपने वेब सेवा कार्यान्वयन पर रखा गया है और इसे प्रत्येक रिटर्न ऑब्जेक्ट के व्यक्तिगत मार्शल के बिना वैश्विक रूप से सभी BigDecimals पर लागू होता है। क्या कोई और तरीका है इसे करने के लिए?

उदा।

Interface DummyWebService 
-- Get Return Object (Return object is a POJO with say an ID and a BigDecimal value) 

Implementation default 
-- No type annotation, uses default BigDecimal marshaller 

Marshalled Implementation 
-- XmlTypeAdapters implementation, should globally use BigDecimal 

मैंने एडाप्टर को कार्यान्वयन पर डालने का प्रयास किया है, लेकिन यह काम नहीं करता है।

कोई विचार?

उत्तर

6

आप अपने XmlAdapter पैकेज स्तर पर रजिस्टर और यह सभी क्षेत्रों के लिए लागू कर सकते हैं/कि प्रकार है कि पैकेज के भीतर के गुण:

com/उदाहरण/package-info.java

@XmlJavaTypeAdapters({ 
    @XmlJavaTypeAdapter(value=BigDecimalAdapter.class, type=BigDecimal.class) 
}) 
package com.example; 

import javax.xml.bind.annotation.adapters.*; 

अधिक जानकारी के लिए

+2

जहां तक ​​मैं इसे देख सकता हूं, यह काम नहीं करेगा क्योंकि पैकेज-जानकारी मॉडल ऑब्जेक्ट फ़ोल्डर में होना आवश्यक है, जो इसे मेरी सेवा के सभी उदाहरणों पर लागू करता है। इसे सेवा के पैकेज पर रखकर काम नहीं करता - मैंने पहले ही कोशिश की है। – Andrew

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