2012-02-14 13 views
8

से माइग्रेशन मैं सरल अनुप्रयोग में जेट्टी 6 का उपयोग एम्बेडेड सर्वलेट कंटेनर के रूप में करता हूं। मैं जेट्टी 8. उसे अपडेट करने के घाट 6 में फैसला किया कि यह सर्वर शुरू करने के लिए बहुत आसान था:जेट्टी 6 से जेटी 8

Server server = new Server(8080); 
Context context = new Context(server, "/", Context.SESSIONS); 
context.addServlet(MyServlet.class, "/communication-service"); 
server.start(); 

लेकिन यह Jetty8 में काम नहीं करता। दुर्भाग्य से मुझे इस संस्करण के लिए कोई आसान उदाहरण नहीं मिल रहा है। त्रुटि

an enclosing instance that contains 
    org.eclipse.jetty.server.handler.ContextHandler.Context is required 

के साथ संदर्भ को तत्काल नहीं कर सकता क्योंकि अब यह एक आंतरिक वर्ग है और ऐसा कोई भी कन्स्ट्रक्टर नहीं है।

अधिकांश उदाहरण जेटी 6 और 7 के लिए हैं। क्या आप जेटी 8 पर सर्वलेट शुरू करने के लिए सरल उदाहरण प्रदान कर सकते हैं?

+0

नहीं, यह काम नहीं करता। – NullPointer

+0

आपका प्रश्न विस्तार पर कम है। क्या काम नहीं करता है? कौन सी रेखा समस्या का कारण बनती है? जब आप कोशिश करते हैं और दौड़ते हैं तो क्या कोई स्टैक ट्रेस होता है? – SteveD

+0

मुझे अपने जेटी 6 कोड में से एक ही समस्या है। मेरे पास दो 'संदर्भ' था जो सर्वर को पैरामीटर के रूप में ले जाता था। जेट्टी 8 में पैटर्न उलटा प्रतीत होता है, जिसमें आपके पास सर्वर में एक 'सेट हैंडलर' विधि है (एक हैंडलर के लिए)। लेकिन दस्तावेज में से कोई भी यह पता नहीं लगाता कि आप उसी सर्वर से जुड़े एक से अधिक संदर्भों के साथ कोड कैसे माइग्रेट करते हैं। क्या यह एक ऐसी स्थिति है जहां आप एक संदर्भ हैंडलर संग्रह का उपयोग करने के लिए हैं? – Ash

उत्तर

1

जेटी आजकल ग्रहण का हिस्सा है। प्रलेखन here जेट्टी 7 के लिए है लेकिन दावा करता है कि इसे जेट्टी 8 के लिए काम करना चाहिए। पृष्ठ के अंत में सर्वलेट्स का उपयोग करने का एक उदाहरण है।

+1

यह उदाहरण भी काम नहीं करता है। ServletContextHandler और ServletHolder – NullPointer

+0

जैसी कोई कक्षा नहीं है तो आप कुछ गलत कर रहे हैं क्योंकि Jetty 8 Javadoc में इन वर्गों को सूचीबद्ध किया गया है। – SteveD

+0

मैंने मैवेन निर्भरता org.eclipse.jetty jetty-server 8.1 जोड़ा है। क्या गलत हो सकता है? http://dl.dropbox.com/u/12053587/jetty1.png – NullPointer

13

यह जेट्टी 8 आपके कोड के बराबर है। यह अभी भी उतना आसान है जितना पहले था, हालांकि एपीआई थोड़ा बदल गया है।

यदि यह आपके लिए काम नहीं कर रहा है, तो आपके पास शायद क्लासपाथ समस्या हो - जेटी 8 को कई स्वतंत्र जार फ़ाइलों में विभाजित किया गया है, और आपको उनमें से कई की आवश्यकता होगी। कम से कम आप की जरूरत:

  • घाट-निरंतरता
  • घाट-http
  • घाट-कब
  • घाट-सुरक्षा
  • घाट-सर्वर
  • घाट-सर्वलेट
  • घाट -util
  • सर्वलेट-एपीआई

आप उन जार है, तो इस कोड को ठीक से काम करना चाहिए:

package test; 

import java.io.IOException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.servlet.ServletContextHandler; 

public class Jetty8Server { 
    public static class MyServlet extends HttpServlet { 
     protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException { 
      response.setContentType("text/plain"); 
      response.getWriter().write(getClass().getName() + " - OK"); 
     } 
    } 
    public static void main(String[] args) throws Exception { 
     Server server = new Server(8080); 
     ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS); 
     handler.setContextPath("/"); // technically not required, as "/" is the default 
     handler.addServlet(MyServlet.class, "/communication-service"); 
     server.setHandler(handler); 
     server.start(); 
    } 
} 

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

  • कोई संबंधित समस्या नहीं^_^