`
manyinjin
  • 浏览: 92667 次
  • 性别: 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
分享到:
评论

相关推荐

    在web.xml中配置action或.do

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

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

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

    Maven工程的web.xml模板

    由于经常使用Maven创建web工程所以需要使用web.xml默认模板

    javaweb项目中web.xml的作用

    只是网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。 web.xml文件是javaweb项目中的一个非常重要的配置文件,它用于初始化工程配置信息,...

    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

    Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误

    在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析,并提供解决方案。 错误原因 Jboss应用服务器在启动时,会对WEB-INF目录下的...

    无法在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详解

    `web.xml`是Java Web应用程序的核心配置文件,它遵循Java EE规范中的定义,用于定义Web应用的组件、监听器、过滤器以及它们之间的映射关系。在这个文件中,你可以配置Servlet、过滤器、会话超时、错误页面、欢迎文件...

    web.xml事例

    java EE web程序的web.xml

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

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

    关于web.xml配置文件记录.docx

    web.xml文件,全称为部署描述符文件,是Servlet规范中规定的一个核心配置文件,用于配置Web应用程序的行为。它是一个XML格式的文件,包含了启动和运行Web应用所需的各种元数据和配置信息。理解并熟练掌握web.xml的...

    web.xml+详细解析四合一

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

Global site tag (gtag.js) - Google Analytics