`
manyinjin
  • 浏览: 92413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在JettyServer中构建无web.xml的web application

阅读更多
    JettyServer常常会作为内嵌的server,特别是在我们开发JavaEE的应用的时候,JettyServer+Hsqldb会大大的加快我们开发的速度,它广泛应用于针对webapplication的自动化单元测试中。   
    作为一个webapplication,如果没有WEB-INF目录和下面的web.xml,你的反应会是什么?如果是一个Struts2+  Spring的一个webapplication呢?
    有的时候我们真的有这种需求,比如我要用一个jar包来发布一个功能简单的application,既有webservice又是RESTfull的,在希望它是一种很light的方式的同时又希望利用Struts+Spring来做,怎么办呢?
    我们来看看一种甚至是web.xml都不需要的方式吧。
final ClassPathXmlApplicationContext originalContext = 
    new ClassPathXmlApplicationContext("accountServiceContext.xml");

        Object o = originalContext.getBean("accountService");
       //publish accountservice as a webservice with XFire
        XFire xfire = XFireFactory.newInstance().getXFire();
        ServiceFactory factory = new ObjectServiceFactory(xfire.getTransportManager(), null);
        Service service = factory.create(AccountService.class);
        service.setInvoker(new BeanInvoker(o));
        xfire.getServiceRegistry().register(service);
        try {
            int port = Integer.parseInt(System.getProperty("port", "9999"));
            server = new Server(port);
           //build a webappContext without WEN-INF/web.xml
            WebAppContext webApp = new WebAppContext();
            webApp.setContextPath("/");
            webApp.setBaseResource(Resource.newClassPathResource(""));
            webApp.setConfigurations(new Configuration[0]);
            webApp.addFilter(RedirectFilter.class, "/*", 1);
            //org.apache.struts2.dispatcher.FilterDispatcher, let struts recongonize our actions
            webApp.addFilter(FilterDispatcher.class, "/*", 1).setInitParameter("actionPackages", "com.***.action");
            webApp.addServlet(XFireServlet.class, "/*");
            webApp.addEventListener(new ServletContextListener() {
                public void contextInitialized(ServletContextEvent sce) {
                    //use spring context to build a webApplicationContext
                    context = new WebApplicationContextWrapper(originalContext, sce.getServletContext());
                   //make spring work with servlet Container
                    sce.getServletContext().setAttribute(
         WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);
                }
                public void contextDestroyed(ServletContextEvent sce) {
                }
            });
            server.addHandler(webApp);
            server.start();
        } catch (Exception e) {
              ...
        }
0
0
分享到:
评论

相关推荐

    SpringMVC基于代码的配置方式(零配置,无web.xml)

    在基于代码的配置中,我们不再需要在web.xml中配置,而是通过Spring的@Configuration和@EnableWebMvc注解来实现。不过,由于Spring Boot的自动配置,通常我们并不需要显式地添加@EnableWebMvc,因为已经默认开启了。...

    在web.xml中配置action或.do

    ### 在web.xml中配置action或.do的理解与实践 #### 一、引言 在Web开发领域,特别是基于Java的Web应用程序开发中,`web.xml`文件扮演着至关重要的角色。它不仅定义了Web应用的基本配置,还管理着诸如Servlet、过滤...

    struts.xml和applicationContext.xml、web.xml的配置

    在Java Web开发中,`struts.xml`, `applicationContext.xml` 和 `web.xml` 是三个至关重要的配置文件,它们各自负责不同的职责,并协同工作来构建一个完整的应用框架。以下是关于这三个配置文件的详细说明。 首先,...

    web.xml各种配置

    在大型Web工程中,web.xml文件非常重要,因为它提供了一个中央配置点,便于管理Web应用的各种资源和服务。 ### Servlet版本与web.xml的结构 不同版本的servlet规范定义了不同的web.xml结构。以Servlet 2.3和...

    Spring全注解project示例 (无web.xml配置)

    3. **无web.xml配置**:在传统的Servlet应用中,web.xml是部署描述符,用于配置Servlet、Filter和Listener等。但在Spring Boot应用中,尤其是使用Spring MVC时,可以借助`@SpringBootApplication`注解启动Spring ...

    web.xml配置详解.pdf

    web.xml 各属性作用描述 Web.xml 常用元素 <web‐app> ‐name>‐name>定义了WEB 应用的名字 <description></description> 声明WEB 应用的描述信息

    web.xml配置详解

    这些子元素可以在 web.xml 文件中出现零次或多次,并且可以包含自己的子元素。 DTD 文件 DTD 文件用于检查 XML 文档的有效性。DTD 文件规定了 web.xml 文件的语法和结构。web.xml 文件必须遵守 DTD 文件的规则,...

    servlet的写登陆管理系统用到的web.xmlweb.xml

    servlet的写登陆管理系统用到的web.xml

    无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl

    标题中的问题“无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl”指出,这可能是Java Web应用开发中遇到的一个常见错误,涉及到JSP(JavaServer Pages)和JSTL(Java...

    Tomcat中web.xml文件的详细说明

    Tomcat 中 web.xml 文件的详细说明 Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用...

    快速搭建一个java config(无web.xml)的web工程(一)

    在早期的Spring应用中,配置主要通过XML文件完成,但随着Spring的发展,Java Config的出现使得我们可以使用纯Java代码来配置应用,减少了XML的使用,提高了可读性和维护性。本篇文章将指导你如何快速搭建一个不依赖...

    web.xml 配置详解

    web.xml 配置详解,需要的下载了。。。Web.xml常用元素和在java web规范中说明.按照listner,filter,servlet的顺序初始化

    web.xml文件

    ssh的web.xml的配置,很实用的哦!

    Web.xml配置详解

    在Web开发中,`web.xml`文件是Web应用程序的部署描述符,它是Java Servlet规范的一部分,用于配置Web应用的各种组件,如Servlet、过滤器、监听器等。理解并熟练掌握`web.xml`的配置对于任何Web开发者来说都至关重要...

    web.xml事例

    java EE web程序的web.xml

    web.xml+详细解析四合一

    WEB.xml是Java EE(现称为Jakarta EE)应用中用来配置和控制应用...随着技术的发展,虽然现代的Java EE应用开发中越来越多的配置转向使用注解和Java配置类,web.xml依然在许多传统项目和特定场景下扮演着重要的角色。

    web.xml使用手册

    包含了web.xml使用时的各种属性设置

    java web项目 web.xml配置文件下载

    全新的java web项目的配置文件,新建的纯净的web.xml文件,没做任何改动,下载就可以使用了。

    springMVC零配置,无web.xml,无spring配置

    在现代的Java Web开发中,Spring MVC框架以其灵活性和强大的功能深受开发者喜爱。然而,传统的Spring MVC项目往往依赖于XML配置文件,如`web.xml`和`spring-servlet.xml`等,来定义和管理应用程序的组件。随着Java...

Global site tag (gtag.js) - Google Analytics