मैं एक्लीप्से के बाहर जेट्टी जर्सी और जैक्सन को चलाने की कोशिश कर पागल हो रहा हूं।जेट्टी + जर्सी + जैक्सन, एक्लिप्स (सफलता) बनाम कमांड लाइन में भिन्न व्यवहार (त्रुटि असमर्थित मीडिया प्रकार)!
public class Main {
public static void main(String[] args) throws Exception {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*").setInitParameter(
"jersey.config.server.provider.classnames", CanaryEndpoint.class.getCanonicalName());
Server jettyServer = new org.eclipse.jetty.server.Server(8089);
jettyServer.setHandler(context);
jettyServer.start();
jettyServer.join();
}
}
एक endpoint वर्ग:
@Path("/endpoint")
public class CanaryEndpoint {
@POST
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String canaryTest(ValueWrapper param) {
System.out.println("Deserialized Property: " + param.isFlag());
return "{OK}";
}
}
और एक इकाई (unserialize करने के लिए) वर्ग:
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class ValueWrapper {
@XmlElement
public boolean flag;
public ValueWrapper() {}
public boolean isFlag() { return flag; }
public void setFlag(boolean flag) { this.flag = flag;}
}
अब यह अजीब हिस्सा आता है
मैं एक मुख्य वर्ग है । मैं पोस्टमैन का उपयोग 8089 पोर्ट पर POST याचिका भेजकर और {"flag" : "true"}
के कच्चे JSON मान को सामग्री-प्रकार और पर्याप्त रूप से सेट स्वीकार करने के साथ उपभोग करने के लिए जेएसओएन का परीक्षण करने के लिए करता हूं।
जब मैं सही ढंग से ग्रहण सर्वर जवाब के माध्यम से मुख्य वर्ग खेलते हैं, लेकिन जब मैं CLI (mvn साफ पैकेज + जावा -cpJar main_class) में यह कर, सर्वर का जवाब देता त्रुटि 415: Unsuported मीडिया प्रकार
मेरे सरल pom.xml:
<jersey.version>2.14</jersey.version>
<jetty-version>9.2.6.v20141205</jetty-version>
(...)
<artifactId>jetty-server</artifactId>
<artifactId>jetty-servlet</artifactId>
<artifactId>jersey-container-servlet-core</artifactId>
<artifactId>jersey-json</artifactId>
<artifactId>jersey-media-json-jackson</artifactId>
क्या हो रहा है इसके बारे में कोई सुझाव?
संपादित करें: मैंने थोड़ा सा समस्या संकुचित की। Com.fasterxml.jackson.jaxrs.json की तरह लगता है। जैकसन जेसनप्रोवाइडर पंजीकरण नहीं कर रहा है जब ऐप को कंसोल से निष्पादित किया जाता है। मैं इसे मैन्युअल रूप से कैसे पंजीकृत कर सकता हूं?