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) {
...
}
分享到:
相关推荐
### 在web.xml中配置action或.do的理解与实践 #### 一、引言 在Web开发领域,特别是基于Java的Web应用程序开发中,`web.xml`文件扮演着至关重要的角色。它不仅定义了Web应用的基本配置,还管理着诸如Servlet、过滤...
在基于代码的配置中,我们不再需要在web.xml中配置,而是通过Spring的@Configuration和@EnableWebMvc注解来实现。不过,由于Spring Boot的自动配置,通常我们并不需要显式地添加@EnableWebMvc,因为已经默认开启了。...
由于经常使用Maven创建web工程所以需要使用web.xml默认模板
只是网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。 web.xml文件是javaweb项目中的一个非常重要的配置文件,它用于初始化工程配置信息,...
在Java Web开发中,`struts.xml`, `applicationContext.xml` 和 `web.xml` 是三个至关重要的配置文件,它们各自负责不同的职责,并协同工作来构建一个完整的应用框架。以下是关于这三个配置文件的详细说明。 首先,...
在大型Web工程中,web.xml文件非常重要,因为它提供了一个中央配置点,便于管理Web应用的各种资源和服务。 ### Servlet版本与web.xml的结构 不同版本的servlet规范定义了不同的web.xml结构。以Servlet 2.3和...
3. **无web.xml配置**:在传统的Servlet应用中,web.xml是部署描述符,用于配置Servlet、Filter和Listener等。但在Spring Boot应用中,尤其是使用Spring MVC时,可以借助`@SpringBootApplication`注解启动Spring ...
web.xml 各属性作用描述 Web.xml 常用元素 <web‐app> ‐name>‐name>定义了WEB 应用的名字 <description></description> 声明WEB 应用的描述信息
这些子元素可以在 web.xml 文件中出现零次或多次,并且可以包含自己的子元素。 DTD 文件 DTD 文件用于检查 XML 文档的有效性。DTD 文件规定了 web.xml 文件的语法和结构。web.xml 文件必须遵守 DTD 文件的规则,...
servlet的写登陆管理系统用到的web.xml
在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析,并提供解决方案。 错误原因 Jboss应用服务器在启动时,会对WEB-INF目录下的...
标题中的问题“无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl”指出,这可能是Java Web应用开发中遇到的一个常见错误,涉及到JSP(JavaServer Pages)和JSTL(Java...
Tomcat 中 web.xml 文件的详细说明 Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用...
在早期的Spring应用中,配置主要通过XML文件完成,但随着Spring的发展,Java Config的出现使得我们可以使用纯Java代码来配置应用,减少了XML的使用,提高了可读性和维护性。本篇文章将指导你如何快速搭建一个不依赖...
web.xml 配置详解,需要的下载了。。。Web.xml常用元素和在java web规范中说明.按照listner,filter,servlet的顺序初始化
`web.xml`是Java Web应用程序的核心配置文件,它遵循Java EE规范中的定义,用于定义Web应用的组件、监听器、过滤器以及它们之间的映射关系。在这个文件中,你可以配置Servlet、过滤器、会话超时、错误页面、欢迎文件...
java EE web程序的web.xml
全新的java web项目的配置文件,新建的纯净的web.xml文件,没做任何改动,下载就可以使用了。
web.xml文件,全称为部署描述符文件,是Servlet规范中规定的一个核心配置文件,用于配置Web应用程序的行为。它是一个XML格式的文件,包含了启动和运行Web应用所需的各种元数据和配置信息。理解并熟练掌握web.xml的...
WEB.xml是Java EE(现称为Jakarta EE)应用中用来配置和控制应用...随着技术的发展,虽然现代的Java EE应用开发中越来越多的配置转向使用注解和Java配置类,web.xml依然在许多传统项目和特定场景下扮演着重要的角色。