2012-09-26 14 views
25

में विभाजित डिस्पेंसेंसी मैं जेट्टी डब्ल्यू/जर्सी को एम्बेड करने वाला एक सर्वर लिख रहा हूं। जब मैं ग्रहण से निष्पादित करता हूं, तो सबकुछ बढ़िया होता है। हालांकि, अगर मैं अपने सर्वर और Maven विधानसभा का उपयोग कर एक भी जार में सभी निर्भरता को इकट्ठा:जर्सी अपवाद केवल तभी फेंक दिया गया जब एक एकल जार

Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write 
SEVERE: A message body writer for Java class com.acme.server.webservice. 
exception.WebServiceFailure, and Java type class com.acme.server.webserv 
ice.exception.WebServiceFailure, and MIME media type application/json was not fo 
und 
Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write 
SEVERE: The registered message body writers compatible with the MIME media type 
are: 
*/* -> 
    com.sun.jersey.server.impl.template.ViewableMessageBodyWriter 

17:35:59.372 [qtp184245201-22 - /] ERROR o.a.h.ReflectorServletProcessor - onReq 
uest() 
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A mess 
age body writer for Java class com.acme.server.webservice.exception.WebS 
erviceFailure, and Java type class com.acme.server.webservice.exception. 
WebServiceFailure, and MIME media type application/json was not found 
     at com.sun.jersey.spi.container.ContainerResponse.write(ContainerRespons 
e.java:285) ~[vma-server-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequ 
est(WebApplicationImpl.java:1457) ~[server-0.0.1-SNAPSHOT-jar-with-dependenc 
ies.jar:na] 

...

पूरा पता लगाने, यहाँ है अगर उपयोग करें: एक लक्ष्य, मैं एक अपवाद प्राप्त करें: https://gist.github.com/3790817

मैवेन जार-निर्भरता बनाने के दौरान कोई त्रुटि नहीं फेंकता है।

मैं Maven और जावा की तैनाती के साथ एक नौसिखिया हूँ, और मैं वास्तव में यकीन है कि डिबगिंग के साथ आगे बढ़ना करने के लिए कैसे नहीं हूँ।

इसके अलावा, मुझे इस मुद्दे को हल करने की आवश्यकता है, लेकिन मैं किसी भी सुझाए गए कार्य-आस-पास की भी सराहना करता हूं क्योंकि मुझे अपने सर्वर के निष्पादन योग्य डेमो का उत्पादन करने की आवश्यकता है क्योंकि एक प्वाइंट-बालों वाले बॉस (टीएम) ग्रहण के बिना निष्पादित कर सकते हैं।

समाधान:

पावेल के जवाब के आधार पर, मैं Maven-छाया-प्लगइन के पक्ष में Maven-assemly-प्लगइन गिरा दिया। यहां छाया कॉन्फ़िगरेशन है जो मेरे लिए काम करता है:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.0</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <transformers> 
         <!-- use transformer to handle merge of META-INF/services - see http://java.net/jira/browse/JERSEY-440?focusedCommentId=14822&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_14822 --> 
          <transformer 
           implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> 
         </transformers> 
         <filters> 
          <!-- filter to address "Invalid signature file" issue - see http://stackoverflow.com/a/6743609/589215--> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

क्या आपकी पोम फ़ाइल में परिभाषित (जर्सी से संबंधित) निर्भरता पोस्ट करना संभव है? मेरे पास एक ही समस्या है, लेकिन मैं पहले से ही मैवेन-शेड-प्लगइन का उपयोग कर रहा हूं। 'जर्सी-बंडल' पर स्विच करने से मेरी समस्या हल हो गई, लेकिन यह मेरे पोम में केवल आवश्यक निर्भरताओं को परिभाषित करने से बचाना चाहती है। – Athafoud

+0

यह समाधान मेरे लिए काम किया। मैं बिल्कुल एक ही मुद्दा था। धन्यवाद!!!! – jmsimpson68

उत्तर

22

आप जर्सी जार को सही ढंग से विलय नहीं कर रहे हैं।

जर्सी 1.x अपने घटकों और असेंबली को खोजने के लिए मेटा-आईएनएफ/सेवा तंत्र का उपयोग करता है: एकल शायद सब कुछ एक ही जार में प्रतिलिपि बनाता है, पहले से मौजूद फाइलों को ओवरराइड कर रहा है लेकिन मेटा-आईएनएफ/सेवा फाइलों को संगत करने की आवश्यकता है।

जर्सी-बंडल (com.sun.jersey:jersey-bundle:1.14) का उपयोग कर प्रयास करें या अपने विधानसभा सेटिंग्स को ठीक (या इसे बेहतर करने के लिए एक और प्लग इन खोजें)।

+1

धन्यवाद, पावेल। आप इसे किसी न किसी। मेरे मामले में, 'जर्सी-बंडल' ने अपनी खुद की समस्याओं को प्रस्तुत किया, हालांकि मुझे 'मेवेन-असेंबली-प्लगइन' प्लगइन छोड़ने और 'मेवेन-शेड-प्लगइन' पर जाने में सफलता मिली। मैं अपना प्रश्न डब्ल्यू/पीओएक्स अंश अपडेट कर रहा हूं जिसने चाल बनाई थी। – HolySamosa

+0

क्या आप अपना पोम पोस्ट कर सकते हैं? – supercobra

+0

बस जर्सी-बंडल निर्भरता जोड़ना और मैवेन-असेंबली-प्लगइन के उपयोग को बनाए रखना मेरे जार-निर्भरता को तय करता है। हांलांकि इसकी कीमत के बारे निश्चित नहीं हूँ। – Mafro34

1

क्या आप अपना पोम पोस्ट कर सकते हैं?

क्या आप कुछ निर्भरताओं को प्रदान करते हैं? यह एक स्टैंडअलोन ऐप और वेबपैप बनाने के लिए काफी अलग है, क्योंकि कुछ जार वेब कंटेनर (टोमकैट या अन्य) द्वारा प्रदान किए जाने वाले हैं।

के रूप में अपने कंटेनर "एम्बेडेड" है आपके एप्लिकेशन में (और कंटेनर में आपका ऐप्लिकेशन नहीं) तो शायद आप सही तरीके से प्रबंधित नहीं करते हैं इन निर्भरता।

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