سؤال

أنا أكتب بعض رمز المثال حيث يتم تشغيل خادم رصيف مضمن. يجب أن يقوم الخادم بتحميل Servlet بالضبط ، وإرسال جميع الطلبات إلى Servlet والاستماع إلى LocalHost: 80

رمز بلدي حتى الآن:

static void startJetty() {
        try {
            Server server = new Server();

            Connector con = new SelectChannelConnector();
            con.setPort(80);
            server.addConnector(con);

            Context context = new Context(server, "/", Context.SESSIONS);
            ServletHolder holder = new ServletHolder(new MyApp());
            context.addServlet(holder, "/*");

            server.start();
        } catch (Exception ex) {
            System.err.println(ex);
        }

    }

هل يمكنني فعل الشيء نفسه مع كود/خطوط أقل؟ (jetty 6.1.0 المستخدمة).

هل كانت مفيدة؟

المحلول

static void startJetty() {
    try {
        Server server = new Server();
        Connector con = new SelectChannelConnector();
        con.setPort(80);
        server.addConnector(con);
        Context context = new Context(server, "/", Context.SESSIONS);
        context.addServlet(new ServletHolder(new MyApp()), "/*");
        server.start();
    } catch (Exception ex) {
        System.err.println(ex);
    }
}

تمت إزالة المسافة البيضاء غير الضرورية ونقلها خلق ServleTholder مضمّنة. تمت إزالة 5 خطوط.

نصائح أخرى

يمكنك تكوين الرصيف بشكل إعلاني في Application ApplicationContext.xml ، على سبيل المثال:

http://ropindersingh.com/2008/12/10/spring-and-jetty-integration/

ثم ببساطة استرداد حبة الخادم من ApplicationContext.xml وبدء الاتصال ... أعتقد أن هذا يجعله سطرًا واحدًا من التعليمات البرمجية ... :)

((Server)appContext.getBean("jettyServer")).start();

إنه مفيد لاختبارات التكامل التي تنطوي على رصيف.

لقد كتبت مكتبة ، easyjetty, ، هذا يجعل من الأسهل بكثير تضمين الرصيف. إنها مجرد طبقة رقيقة فوق واجهة برمجة تطبيقات الرصيف ، خفيفة الوزن حقًا.

مثالك سيبدو هكذا:

import com.athaydes.easyjetty.EasyJetty;

public class Sample {

    public static void main(String[] args) {
        new EasyJetty().port(80).servlet("/*", MyApp.class).start();
    }

}

يعمل مع رصيف 8:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class Main {
    public static void main(String[] args) throws Exception {
            Server server = new Server(8080);
            WebAppContext handler = new WebAppContext();
            handler.setResourceBase("/");
            handler.setContextPath("/");
            handler.addServlet(new ServletHolder(new MyApp()), "/*");
            server.setHandler(handler);
            server.start();
    }
}
        Server server = new Server(8080);
        Context root = new Context(server, "/");
        root.setResourceBase("./pom.xml");
        root.setHandler(new ResourceHandler());
        server.start();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top