2012-04-06 11 views
17

वेब और स्टैक ओवरफ्लो की विस्तृत खोज के बाद, मैं अभी भी जेटी के साथ जर्सी द्वारा प्रदान किए गए रीस्टलेट स्टाइल इंटरफ़ेस को एकीकृत करने का प्रयास करने के साथ अटक गया हूं।जेएक्स-आरएस-जर्सी के साथ जेटी को एकीकृत करना

मेरे पास जेटी सर्वर ऊपर है और चल रहा है और जैसे ही जर्सी का उपयोग करना बहुत आसान लगता है, क्या किसी को पता है कि दोनों को एक साथ कैसे बांधना है? कोई ठोस लिंक मदद करेगा - मैं सर्वलेट प्रोग्रामिंग के लिए भी थोड़ा नया हूं।

उत्तर

26

मैंने जेटी और जर्सी का उपयोग करके कुछ समय पहले एक ऐप बनाया था।

web.xml:

<servlet> 
    <servlet-name>rest.service</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> 
     <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>your.package.with.jersey.resources</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>rest.service</servlet-name> 
    <url-pattern>/service/*</url-pattern> 
</servlet-mapping> 

एक बाकी संसाधन:

package your.package.with.jersey.resources; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.SecurityContext; 

@Path("login") 
public class LoginResource { 

    @Context 
    private SecurityContext security; 

    @GET 
    @Produces(MediaType.APPLICATION_XML) 
    public String login() { 

     String email = security.getUserPrincipal().getName(); 
     return "ok"; 
    } 
} 

जेट्टी स्टार्टर:

public class StartJetty { 

    public static void main(String[] args) throws Exception { 

     Server server = new Server(); 
     SocketConnector connector = new SocketConnector(); 
     // Set some timeout options to make debugging easier. 
     connector.setMaxIdleTime(1000 * 60 * 60); 
     connector.setSoLingerTime(-1); 
     connector.setPort(8080); 
     server.setConnectors(new Connector[] { connector }); 

     WebAppContext bb = new WebAppContext(); 
     bb.setServer(server); 
     bb.setContextPath("/"); 
     bb.setWar("src/main/webapp"); 

     server.addHandler(bb); 

     try { 
      System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP"); 
      server.start(); 
      while (System.in.available() == 0) { 
       Thread.sleep(5000); 
      } 
      server.stop(); 
      server.join(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.exit(100); 
     } 
    } 
} 

pom.xml:

यह सिर्फ एक मानक वास्तव में वेब ऐप्लिकेशन की
<!-- Jetty --> 
<dependency> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-util</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-management</artifactId> 
</dependency> 

<!-- Jersey (JAX-RS) --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey.contribs</groupId> 
    <artifactId>jersey-spring</artifactId> 
</dependency> 
<dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>jsr311-api</artifactId> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-test-framework</artifactId> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.grizzly</groupId> 
    <artifactId>grizzly-servlet-webserver</artifactId> 
</dependency> 

(...) 

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId>  
</plugin> 

आशा है कि ये स्निपेट आपको सही दिशा में इंगित करें।

+1

धन्यवाद, यह कम या ज्यादा जो मैं खोज रहा था - हालांकि मैंने जावा कोड में कुछ .xml सामान को सारणीबद्ध किया - मुझे एक कम चीज़ के साथ काम करता है! – rmoh21

+0

आपको वेब-इंफ – iTake

+1

में web.xml और applicationContext.xml में ContextLoaderListener की भी आवश्यकता होगी, आप वहां पर ग्रिजली की निर्भरता क्यों रखते हैं? – Stainedart

16

आप जेटी, जर्सी, जैक्सन, लॉगबैक/लॉग 4j/JUL/CJL और JDBI के बीच आउट ऑफ़ द बॉक्स एकीकरण के लिए Dropwizard पर देखना चाहेंगे, जो सभी अच्छी तरह से यमर मेट्रिक्स के साथ वाद्य यंत्र हैं।

+0

टूटा लिंक। 15char – Navin

+1

अब इसे फिक्स्ड, ध्यान देने के लिए धन्यवाद। – Cagatay

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