2013-07-23 2 views
1

web.xml을 사용하지 않고 Wicket을 구성하는 방법이 필요합니다.web.xml없이 개찰; 순수 자바 구성

여러 블로그 게시물을 시도했지만 여전히 문제가 있습니다. 예를 들어

:

https://cwiki.apache.org/confluence/display/WICKET/Wicket+without+web.xml+%28embedded+Jetty%29

http://dev-loki.blogspot.de/2008/05/embedded-jetty-wicketfilter-webxml.html

는 작업 솔루션을 찾을 수 없습니다.

하나의 홈페이지로 간단한 프로젝트를 만들었고 위에서 언급 한 링크의 단계를 따르고 성공하지 못했습니다.

부두를 시도하고 HTTP 오류 404가 발생했습니다. web.xml처럼 작동해야하는 코드를 보여줄 수 있습니다. 그것은 스프링 기반 솔루션입니다.

public class WicketApplicationInitializer implements WebApplicationInitializer { 

@Override 
public void onStartup(ServletContext servletContext) throws ServletException { 

    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); 
    ctx.register(SpringConfig.class); 

    servletContext.addListener(new ContextLoaderListener(ctx)); 

    WicketFilter filter = new WicketFilter(new WicketApplication()); 
    filter.setFilterPath(""); 

    servletContext.addFilter("wicketFilter", filter).addMappingForUrlPatterns(null, false, "/*"); 

    servletContext.addServlet("/*", DefaultServlet.class); 

} 

}

이 트릭을해야하지만, 서버에서 인식되지 않았다. 간단하고 정상적인 web.xml의 단계와 비슷하지만 작동하지 않습니다.

하나의 홈페이지에가 장착되어

mountPage("/testing", HomePage.class); 

는 액세스 시도 :에서

https://localhost:8443/testing 

결과 :

HTTP ERROR 404 Problem accessing /testing. Reason: Not Found 

누구든지 도와 드릴까요?

추한 web.xml이없는 최소한의 작업 프로젝트가 있습니까? 또는 일부 조언. 당신이 당신의 상황에 필요로하는

import org.mortbay.jetty.Connector; 
    import org.mortbay.jetty.Server; 
    import org.mortbay.jetty.nio.SelectChannelConnector; 
    import org.mortbay.jetty.webapp.WebAppContext; 

    Server server = new Server(); 
    SelectChannelConnector connector = new SelectChannelConnector(); 
    connector.setPort(8000); //or any other port you need 
    server.setConnectors(new Connector[] 
    { connector }); 

    WebAppContext web = new WebAppContext(); 
    web.setContextPath("/"); //assuming you want/as a context like your sample 
    web.setWar("src/webapp"); //check that it matches your webapp directory. 
    server.addHandler(web); 
    server.start(); 
    server.join(); 

이 방법, 당신은 당신이 부두를 사용하는 가정, 많은 전쟁을 추가 할 수 있습니다

+3

Welcome to Stack Overflow. 우리에게 물어 보는 것 외에 우리가 [시도한 것] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)을 보여줄 수 있습니까? –

+0

내 링크가 보이지 않습니까? 나는 이러한 접근법을 시도했다. (단 하나의 HomePage로 새 프로젝트를 만들었고 지침에 따라 페이지를 볼 수 없음) – DaUser

+0

링크에서 솔루션을 사용해 볼 때 생기는 문제는 무엇입니까? 호기심에서 벗어나서 왜 web.xml을 없애고 싶습니까? – bert

답변

1

다음 코드는 web.xml없이 개찰구를 지원하여 부두를 시작합니다.

import org.apache.wicket.protocol.http.WicketFilter; 
import org.apache.wicket.protocol.http.WicketServlet; 
import org.eclipse.jetty.server.Connector; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.server.bio.SocketConnector; 
import org.eclipse.jetty.servlet.ServletHolder; 
import org.eclipse.jetty.webapp.WebAppContext; 


public class Main { 
    public static void main(String[] args) { 
     // Object that holds, and configures the WicketServlet. 
     ServletHolder servletHolder = 
       new ServletHolder(new WicketServlet()); 
     servletHolder.setInitParameter(
       "applicationClassName", 
       "com.javaeenotes.ExampleWicketApplication"); 
     servletHolder.setInitParameter(
       WicketFilter.FILTER_MAPPING_PARAM, "/*"); 
     servletHolder.setInitOrder(1); 

     // Web context configuration. 
     WebAppContext context = new WebAppContext(); 
     context.addServlet(servletHolder, "/*"); 
     context.setResourceBase("."); // Web root directory. 

     // The HTTP-server on port 8080. 
     Server server = new Server(); 
     SocketConnector connector = new SocketConnector(); 
     connector.setPort(8080); 
     server.setConnectors(new Connector[]{connector}); 
     server.setHandler(context); 

     try { 
      // Start HTTP-server. 
      server.start(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

내가 전에 말했듯이 지금 나에게 맞지 않는 http://javaeenotes.blogspot.de/2011/12/running-wicket-on-jetty.html

하여 솔루션이지만, 주제에 맞는 : 그것은 개찰구 응용 프로그램을 시작할 수 있으며, 필요하지 않습니다 부두의 web.xml 구성.

그래서이 답변을 수락 한 것으로 표시하고 wicket 처리의 봄 방법에 대한 또 다른 질문을 시작합니다 ... 어쨌든 덕분에

0

나는 web.xml 파일없이이 방법을 부두를 시작하는 몇 가지 코드를 보았다. WebAppContext 객체 (웹)에 더 많은 내용을 추가하여 필터 및 기타 매핑을 제어 할 수 있습니다.

+0

그건 시작하는 방법입니다, 예! 나는 Wicket에 사용할 준비가 된 또 다른 답변을 올렸다. – DaUser