在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多节点之间的session共享war包(java)
Spring Boot项目导出war包放到tomcat运行跳转到页面出现404报错
部署是这个团队用于安装一...也有一种工具被称为Client Deployer, 它是一种基于脚本的“命令shell”,它与这个Tomcat Manager 交互,但是提供另外的一些功能,像编译和验证Web应用程序还有打包Web应用程序到一个WAR文件
在网上找了好久,终于找到了可用的资源,本人亲自测试,绝对tomcat7下可用。
tomcat部署war项目的一般操作,从打包,上传,启动项目,查看日志,备份war包,入门操作教程。
主要介绍了Tomcat部署多个war包的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要给大家介绍了关于spring boot项目打包成war在tomcat运行的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
只需将war包放到tomcat下webapps,就可以使用监控tomcat运行的情况,具体操作文档和war在压缩包里
详细的描述怎样配置tomcat和使用tomcat部署war文件。
flex在tomcat下的三个war文件 flex.war,admin.war,simple.war~!~~!
nginx+tomcat8+memcached session共享所需jar包 直接放到tomcat/lib下即可
java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程
Spring Tool Suite安装配置tomcat服务器功能,同时也适合eclipse开发工具.
spring boot项目和vue一起放在tomcat部署,spring boot项目和vue一起放在tomcat部署
Tomcat二级域名Session共享例子,具体操作看博客:http://blog.csdn.net/luogqing/article/details/78595200
多个服务器部署Tomcat共享Session的方法,自己亲身测试
spring-instrument-tomcat-3.2.9.RELEASE.jar
自己做的一个nginx+tomcat+redis完成session共享小例子,包括所需jar,适合初学者,希望大家一起学习交流
为了下次能快速的下载这个war包,留份以备下次使用。