在tomcat内共享Spring context。
contextConfigLocation="/com/test/application-context.xml"
factory="com.test.TomcatWebApplicationContextResourceFactory"
name="bean/RootApplicationContextFactory"
type="org.springframework.context.ApplicationContext"/>
上面这段配置的意思就是,当有人通过jndi名称”bean/RootApplicationContextFactory”来查找对象时,容器就新建一个TomcatWebApplicationContextResourceFactory类实例,并调用它的getObjectInstance方法来获得资源对象。这个工厂类要是想javax.naming.spi.ObjectFactory接口。代码如下:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.RefAddr;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TomcatWebApplicationContextResourceFactory implements
ObjectFactory {
private static final String PARAM = "contextConfigLocation";
private static final String DEFAULT = "application-context.xml";
private static ApplicationContext context; //被共享的spring上下文
private void init(String confFile) {
context = new ClassPathXmlApplicationContext(confFile);
}
public Object getObjectInstance(Object obj,
Name name, Context nameCtx,
Hashtable<?, ?> environment) throws Exception {
if (null == context) {
// Customize the bean properties from our attributes
Reference ref = (Reference) obj;
//从xml配置文件里取得contextConfigLocation元素的值
RefAddr addr = ref.get(PARAM);
if (null != addr) {
String value = (String) addr.getContent();
init(value);
} else {
init(DEFAULT);
}
}
return context;
}
}
1.2 在web应用中引用上面定义的资源
修改tomcat/conf/web.xml,添加以下的内容,这样在这个tomcat下的所有的web应用就都可以访问共享的spring上下文了。
<description>Object factory for Root applicationcontext</description>
<resource-env-ref-name> bean/RootApplicationContextFactory
</resource-env-ref-name>
<resource-env-ref-type> org.springframework.context.ApplicationContext
</resource-env-ref-type>
</resource-env-ref>
1.3 加入依赖的包
从第一步可以看出,tomcat容器需要访问spring的一些类,需要初始化上下文,所以要把初始化上下文时用到的类共享给tomcat。最简单的方法是把所有相关的类和jar包复制到tomcat/lib目录。还可以修改catalina.properties实现,如下:
上面的代码让tomcat载入自定目录里面所有的jar文件。
相关推荐
在 Tomcat 服务器中,我们可以配置单点登录,以便实现多个应用程序之间的身份验证共享。在 server.xml 文件中,我们添加了一个单点登录 valve,如下所示: ```xml <!-- ...
然而,在生产环境中,我们可能需要使用外部的Tomcat服务器,以便于更灵活地管理多个应用,或者与其他已存在的服务共享同一个Tomcat实例。 要将Spring Boot应用部署到外部Tomcat,首先我们需要创建一个WAR包,而不是...
- 资源优化:多个应用可以共享同一个Tomcat实例,节省资源。 - 灵活性:可以单独管理和扩展Tomcat服务器,如调整线程池、连接器等配置。 - 更好的性能:外部Tomcat通常有更多优化选项,适合高并发环境。 然而,缺点...
Tomcat 7.0.72 版本是Tomcat 7系列的一个稳定版本,其中包含了多个安全更新和性能优化。在使用这个版本时,开发者可以期待更好的安全性和可靠性。例如,它可能已经修复了一些已知的安全漏洞,提高了应用的健壮性,...
在压缩包的文件名称列表中,我们看到"apache-tomcat-5.5.25.exe",这表明提供的文件是Windows平台上的可执行安装程序,用户可以通过运行这个文件来安装Apache Tomcat 5.5.25。 在深入讨论Apache Tomcat 5.5.25的...
对于高可用性和负载均衡的需求,Tomcat支持集群配置,通过复制session并在多个实例间共享,以及使用负载均衡器如Apache HTTPD或Nginx来分配请求。 9. **JNDI资源** Tomcat允许通过JNDI(Java Naming and ...
- 在创建Spring Boot项目时,选择打包形式为WAR,项目中的`pom.xml`文件会自动添加Tomcat依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-tomcat <scope>provided ``` ...
2. 负载均衡:使用负载均衡器分配请求到多个Tomcat实例,实现高并发处理。 九、故障排查 1. 查看日志:错误信息通常在`logs/catalina.out`中。 2. 使用JMX工具:远程诊断和管理Tomcat实例。 3. 调试模式:通过设置...
7. **Host**:主机,可以配置多个虚拟主机,每个主机可以包含多个Context。 8. **Engine**:引擎,管理一个或多个Host,是整个服务器的顶级组件。 **二、Tomcat的安装与配置** 1. **下载**:从Apache官方网站下载...
- **共享模块**:包含可被多个模块共享的实体类、工具类或公共组件。 2. **创建模块**: 在Maven或Gradle项目中,可以通过添加子模块来创建这些模块。在Maven的pom.xml中,使用`<modules>`标签定义子模块;在...
9. **集群和负载均衡**:Tomcat支持集群配置,通过复制会话数据在多台服务器之间共享,实现负载均衡和故障转移。 10. **与其他技术的集成**:Tomcat可以与Spring Boot、MyBatis、Hibernate等Java框架无缝集成,构建...
9. **集群与负载均衡**:对于高并发需求,Tomcat支持集群配置,通过复制session数据实现session在多个服务器间的共享,实现负载均衡。 10. **集成其他服务**:Tomcat常与Spring Boot、MyBatis等框架配合使用,构建...
8. **集群配置**:对于高可用性和负载均衡,可以配置Tomcat集群,通过`cluster`元素在多个Tomcat实例之间共享session信息。 9. **虚拟主机**:通过`<Host>`元素,可以在同一台Tomcat服务器上托管多个独立的Web应用...
CAS则是一个开放源码的SSO协议服务器,允许用户通过一个认证点登录,然后在多个应用之间共享登录状态,无需再次输入凭证。CAS的核心功能包括:身份验证、单点登录、票证管理以及服务票验证。 集成Spring Security和...
Apache TomCat有多个稳定版本,如7.x、8.x和9.x,每个版本都有其特定的Java兼容性和功能特性。由于其开源性质,TomCat拥有活跃的社区,不断更新和完善,提供丰富的文档和解决方案,帮助开发者解决遇到的问题。 总结...
1. **Tomcat架构**:Tomcat由几个关键组件构成,包括Catalina(核心Servlet容器)、Jasper(JSP引擎)、 Coyote(HTTP/HTTPS连接器)和Commons(共享库)。 2. **安装与配置**:解压tar.gz文件后,需要配置环境变量...
1. **Red5 服务器**:Red5 是一个开源的流媒体服务器,支持 RTMP(Real Time Messaging Protocol)、RTMPT、RTMPE、RTMPTE、RTMPS 协议,用于实时音频、视频传输,以及数据共享。它允许开发者创建互动的媒体应用程序...
2. 在线协作应用:多个用户可以共享文档,实时编辑和查看更改。 3. 多人在线游戏:实现实时的游戏状态更新和玩家间的交互。 总结,Blazeds作为一个连接Flex和Java的强大工具,极大地提高了富互联网应用程序的交互性...
作为Spring Cloud的一部分,Config Server是一个集中化的配置管理工具,允许在多环境、多实例间共享配置。它支持Git存储配置,可以实现配置的版本控制和回滚。 **Spring Cloud Netflix Eureka** Eureka是服务注册与...
Apache Tomcat是一款开源的Java Servlet容器,主要用于...以上是对Apache Tomcat 7.0.65的基本介绍,包括其核心组件、配置、部署、安全和性能优化等多个方面。理解并熟练掌握这些知识对于Java Web开发和运维至关重要。