2016-10-14 16 views
13

Eclipse maven projesi oluşturdum ve iskelet bağımlılığı ekledim. Daha sonra basit bir sunucu ve jetty sunucusunu başlatan bir sınıf yaptım. İşte ben bugüne kadar ne var:Web.xml'yi programlanabilir bir şekilde başlatmaya başladı jetty

package com.example.jetty; 

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.servlet.ServletContextHandler; 

public class App { 
    public static void main(String[] args) throws Exception { 
     Server server = new Server(80); 
     ServletContextHandler servletContext = new ServletContextHandler(server, "/"); 
     servletContext.addServlet(MyServlet.class, "/"); 
     server.start(); 
    } 
} 

Sorunum bkz çoğu öğreticiler servlet ve böyle yapılandırmak için bir web.xml olması. Bunlardan bazılarını yapmak için programatik yollar bulamıyorum. Bir web.xml oluşturabilir ve yine de iskelemi programlı olarak başlatabilir miyim ve bir şekilde bu web.xml'i yapılandırma için kullanabilir miyim?

Daha spesifik olmak gerekirse, web.xml dosyasında doğru yazmam gerekiyor. Programlı bir şekilde yapmanın bir yolunu bulamadım.

+0

Neden işi yapmak için maven kullanmıyorsunuz? Maven iskelesi alternatif bir çözüm olarak kullanılabilir. https://www.eclipse.org/jetty/documentation/9.4.x/jetty-maven-plugin.html – artificerpi

+0

Hum ... Bana açık değil. Programatik yol, her zaman bildirimsel yoldan farklıdır. Tam olarak ne yapmak istiyorsun? –

+0

Daha spesifik olmak gerekirse, web.xml'de true yazmalıyım. Programlı bir şekilde yapmanın bir yolunu bulamadım. – user1985273

cevap

7

Sana ilgi duyan olabilecek bir örnekle başlayacağız Eğer program yolu Jetty sunucuyla web.xml kullanmak istiyorsanız, o zaman aşağıdakileri yapabilirsiniz:.

WebAppContext context = new WebAppContext(); 
context.setContextPath("/myWebApp"); 
context.setExtractWAR(false); 
context.setDescriptor("/file/system/path/to/your/wab/app/WEB-INF/web.xml"); 
context.setResourceBase("/file/system/path/to/your/wab/app"); 
context.setConfigurationDiscovered(false); 

HandlerList handlerList=new HandlerList(); 
handlerList.addHandler(webAppContext); 

Server server = new Server(threadPool); 
server.setHandler(handlerList); 
server.start(); 

programlı size edebilirsiniz konfigürasyona ilişkin olarak Jetty 8.x (geçerli Jetty sürüm 9.x sürümü) tarafından desteklenen Servlet 3.x API'yi kullanmayı deneyin ve program aracılığıyla tam olarak yapılandırılabilir.

+0

Anwser için teşekkür ederiz. Programlı olarak yapılandırmak istediğimde bu servlet 3.x api bağımlılığına ihtiyaç duyduğumu doğru anlıyor muyum? Ayrıca, async destekli özelliği yapılandırmak için bu API'yı nasıl kullanacağınızı biliyor musunuz? – user1985273

+0

'Servlet 3.0' ı etkinleştirmek için' web.xml'nizde 'version =" 3.0 "' i belirtmeniz gerekir. Diğer her şey boş bırakılabilir, böylece dosya sistemi yerine sınıf yolunda böyle bir 'web.xml' yerleştirebilirsiniz. '@ WebServlet' parametresiyle" asyncSupported = true "," async-supported "için kullanılabilir. –

+0

[burada] (https://github.com/jetty-project/embedded-servlet-3.1) 'Servlet 3.0' ile' Jetty' için bir örnek bulabilirsiniz. –

İlgili konular