2013-02-06 66 views
5

पर काम करता है मैं दो बाकी webapps मैं JBoss 7.1.1 पर तैनात करने के लिए चाहते हैं। सर्वर। दोनों ऐप्लिकेशन मेंJboss 7.1.1 - जैक्सन ContextResolver <ObjectMapper> केवल एक ही तैनाती

बाकी अनुरोध पैदा करता है और Json खपत करता है। मैं वस्तुओं को क्रमबद्ध और deserialize करने के लिए जैक्सन प्रदाता का उपयोग करें।

अब, मैं प्रत्येक webapp के लिए कस्टम ObjectMapper विन्यास की जरूरत है। इसलिए इस समस्या को हल करने के लिए मैंने ContextResolver को लागू करने वाले @ प्रदाता वर्गों को जोड़ा। प्रत्येक परियोजना के लिए एक। फे। मेरी कक्षा में से एक ऐसा दिखता है:

@provider 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public class JacksonConfig implements ContextResolver<ObjectMapper> { 
    private final ObjectMapper objectMapper; 
    public JacksonConfig() 
    { 
     objectMapper = new ObjectMapper(); 
     objectMapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 
    } 
    @Override 
    public ObjectMapper getContext(Class<?> objectType) { 
     return objectMapper; 
    } 
} 

यह अच्छी तरह से काम करता है जब मैं jboss पर केवल एक परियोजना को तैनात करता हूं। जब मैं दोनों को तैनात करने का प्रयास करता हूं, केवल पहले प्रारंभिक प्रोजेक्ट का उपयोग ऑब्जेक्टमैपर परिभाषित करता है। अन्य कोई ContextResolver कक्षा से getContext विधि कभी नहीं कॉल करता है। मैं गलत क्या कर सकता हूँ?

संपादित !:

परीक्षणों का एक बहुत मैं जैक्सन से json पार्स करने staxon करने की विधि बदलने का फैसला किया गया। मुझे उम्मीद थी कि कम से कम यह विधि अच्छी तरह से काम करेगी। लेकिन नहीं ... सीरियलाइजेशन दोनों तैनात अनुप्रयोगों पर पूरी तरह से काम करता है। लेकिन फिर, किसी भी तरह से jboss deserialization प्रक्रिया में staxon के बजाय जैक्सन का उपयोग करने का फैसला किया। तैनाती के बाद पहले जो भी मैं पहले कॉल करता हूं, वह हमेशा अच्छा काम करता है। लेकिन जैकसन का उपयोग करने वाला दूसरा (कोई विचार क्यों नहीं ...) जो अपवाद कहता है। हमेशा ...

वहाँ Jboss के साथ किसी भी समस्या है? शायद मैं कुछ गलत कर रहा हूं लेकिन मुझे पता नहीं है कि कहां है। किसी के पास विचार है कि मुझे कहां देखना चाहिए?

+0

इस सटीक उपयोग के मामले और समस्या मेरे पास है है है कि वहाँ है। और जेआईआरए – NimChimpsky

उत्तर

4

ऐसा लगता है कि मैं इस समस्या के लिए समाधान मिल गया। यह resteasy के मुद्दे जाना जाता था, कि द्वारा निर्माण में विकल्प हटाया जा सकता है:

<context-param> 
    <param-name>resteasy.use.deployment.sensitive.factory</param-name> 
    <param-value>false</param-value> 
</context-param> 

मैं इस पाया:

इस समस्या को मैं सिर्फ अपनी परियोजनाओं के web.xml को परम जोड़ने के लिए किया था हल करने के लिए Resteasy jira में समाधान। यह मेरे लिए वास्तव में अजीब किसी भी jboss या resteasy संबंधित दस्तावेज में कोई जानकारी ...

+0

+1 को प्राथमिकता देना शुरू कर रहा हूं, यदि मैं यह 100 बार प्लस कर सकता हूं। यही कारण है कि मैं jboss और सभी संबंधित परियोजनाओं, खराब दस्तावेज और छोटी गाड़ी नापसंद। –

+0

के लिंक के लिए मैं .NET और या Apple विकास – NimChimpsky