- 浏览: 1012280 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
tomcat 7 源码分析-1 关于读取properties及注册系统properties
Tomact的启动开始于Bootstrap.java,在其init()中,首先要做的就是
setCatalinaHome(); setCatalinaBase(); initClassLoaders();
目的就是将tomcat启动的环境设置好,在进行classloader。
- private void setCatalinaHome() {
- if (System.getProperty( "catalina.home" ) != null )
- return ;
- File bootstrapJar =
- new File(System.getProperty( "user.dir" ), "bootstrap.jar" );
- if (bootstrapJar.exists()) {
- try {
- System.setProperty
- ("catalina.home" ,
- (new File(System.getProperty( "user.dir" ), ".." ))
- .getCanonicalPath());
- } catch (Exception e) {
- // Ignore
- System.setProperty("catalina.home" ,
- System.getProperty("user.dir" ));
- }
- } else {
- System.setProperty("catalina.home" ,
- System.getProperty("user.dir" ));
- }
- }
private void setCatalinaHome() { if (System.getProperty("catalina.home") != null) return; File bootstrapJar = new File(System.getProperty("user.dir"), "bootstrap.jar"); if (bootstrapJar.exists()) { try { System.setProperty ("catalina.home", (new File(System.getProperty("user.dir"), "..")) .getCanonicalPath()); } catch (Exception e) { // Ignore System.setProperty("catalina.home", System.getProperty("user.dir")); } } else { System.setProperty("catalina.home", System.getProperty("user.dir")); } }
判断user.dir\bootstrap.jar存在否来设置catalina.home。
在initClassLoaders();中调用createClassLoader。loader class之前又要读取properties,于是看String value = CatalinaProperties.getProperty(name + ".loader");
- public class CatalinaProperties {
- // ------------------------------------------------------- Static Variables
- private static final org.apache.juli.logging.Log log=
- org.apache.juli.logging.LogFactory.getLog( CatalinaProperties.class );
- private static Properties properties = null ;
- static {
- loadProperties();
- }
- // --------------------------------------------------------- Public Methods
- /**
- * Return specified property value.
- */
- public static String getProperty(String name) {
- return properties.getProperty(name);
- }
- /**
- * Return specified property value.
- */
- public static String getProperty(String name, String defaultValue) {
- return properties.getProperty(name, defaultValue);
- }
- // --------------------------------------------------------- Public Methods
- /**
- * Load properties.
- */
- private static void loadProperties() {
- InputStream is = null ;
- Throwable error = null ;
- try {
- String configUrl = getConfigUrl();
- if (configUrl != null ) {
- is = (new URL(configUrl)).openStream();
- }
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- }
- if (is == null ) {
- try {
- File home = new File(getCatalinaBase());
- File conf = new File(home, "conf" );
- File properties = new File(conf, "catalina.properties" );
- is = new FileInputStream(properties);
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- }
- }
- if (is == null ) {
- try {
- is = CatalinaProperties.class .getResourceAsStream
- ("/org/apache/catalina/startup/catalina.properties" );
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- }
- }
- if (is != null ) {
- try {
- properties = new Properties();
- properties.load(is);
- is.close();
- } catch (Throwable t) {
- error = t;
- }
- }
- if ((is == null ) || (error != null )) {
- // Do something
- log.warn("Failed to load catalina.properties" , error);
- // That's fine - we have reasonable defaults.
- properties=new Properties();
- }
- // Register the properties as system properties
- Enumeration<?> enumeration = properties.propertyNames();
- while (enumeration.hasMoreElements()) {
- String name = (String) enumeration.nextElement();
- String value = properties.getProperty(name);
- if (value != null ) {
- System.setProperty(name, value);
- }
- }
- }
- /**
- * Get the value of the catalina.home environment variable.
- */
- private static String getCatalinaHome() {
- return System.getProperty( "catalina.home" ,
- System.getProperty("user.dir" ));
- }
- /**
- * Get the value of the catalina.base environment variable.
- */
- private static String getCatalinaBase() {
- return System.getProperty( "catalina.base" , getCatalinaHome());
- }
- /**
- * Get the value of the configuration URL.
- */
- private static String getConfigUrl() {
- return System.getProperty( "catalina.config" );
- }
- }
public class CatalinaProperties { // ------------------------------------------------------- Static Variables private static final org.apache.juli.logging.Log log= org.apache.juli.logging.LogFactory.getLog( CatalinaProperties.class ); private static Properties properties = null; static { loadProperties(); } // --------------------------------------------------------- Public Methods /** * Return specified property value. */ public static String getProperty(String name) { return properties.getProperty(name); } /** * Return specified property value. */ public static String getProperty(String name, String defaultValue) { return properties.getProperty(name, defaultValue); } // --------------------------------------------------------- Public Methods /** * Load properties. */ private static void loadProperties() { InputStream is = null; Throwable error = null; try { String configUrl = getConfigUrl(); if (configUrl != null) { is = (new URL(configUrl)).openStream(); } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); } if (is == null) { try { File home = new File(getCatalinaBase()); File conf = new File(home, "conf"); File properties = new File(conf, "catalina.properties"); is = new FileInputStream(properties); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); } } if (is == null) { try { is = CatalinaProperties.class.getResourceAsStream ("/org/apache/catalina/startup/catalina.properties"); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); } } if (is != null) { try { properties = new Properties(); properties.load(is); is.close(); } catch (Throwable t) { error = t; } } if ((is == null) || (error != null)) { // Do something log.warn("Failed to load catalina.properties", error); // That's fine - we have reasonable defaults. properties=new Properties(); } // Register the properties as system properties Enumeration<?> enumeration = properties.propertyNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = properties.getProperty(name); if (value != null) { System.setProperty(name, value); } } } /** * Get the value of the catalina.home environment variable. */ private static String getCatalinaHome() { return System.getProperty("catalina.home", System.getProperty("user.dir")); } /** * Get the value of the catalina.base environment variable. */ private static String getCatalinaBase() { return System.getProperty("catalina.base", getCatalinaHome()); } /** * Get the value of the configuration URL. */ private static String getConfigUrl() { return System.getProperty("catalina.config"); } }
CatalinaProperties 的核心是静态函数loadProperties(),在这里读取真正意义上的properties并注册
发表评论
-
tomcat7.0.8的高级应用-apr1.4.2安装
2011-03-24 17:16 983一 windows下安装 直接 ... -
tomcat 7 源码分析-14 tomcat的container设计
2011-03-11 19:18 1546tomcat 7 源码分析-14 tomca ... -
tomcat 7 源码分析-13 处理request的Valve和Valve的链表Pipeline
2011-03-11 19:17 1127tomcat 7 源码分析-13 处理request的Val ... -
tomcat 7 源码分析-12 Enumeration枚举
2011-03-11 19:14 1249tomcat 7 源码分析-12 Enumeration枚举 ... -
tomcat 7 源码分析-11 tomcat对http协议的实现
2011-03-11 19:13 1401tomcat 7 源码分析-11 tomcat对http协议 ... -
tomcat 7 源码分析-10 线程池ThreadPoolExecutor
2011-03-11 19:12 2211tomcat 7 源码分析-10 线程池ThreadPool ... -
tomcat 7 源码分析-9 tomcat对ServerSocket的封装和使用
2011-03-11 19:11 1634tomcat 7 源码分析-9 tomcat对ServerS ... -
tomcat 7 源码分析-8 生命周期lifecycle和监听listener
2011-03-11 19:10 1384tomcat 7 源码分析-8 生命周期lifecycle和 ... -
tomcat 7 源码分析-7 server初始化中的JMX(DynamicMBean)再续
2011-03-11 19:09 1041tomcat 7 源码分析-7 server初始化中的JMX ... -
tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续
2011-03-11 19:08 1189tomcat 7 源码分析-6 server ... -
tomcat 7 源码分析-5 server初始化中的JMX(DynamicMBean)
2011-03-11 19:08 1364tomcat 7 源码分析-5 server初始化中的JMX ... -
tomcat 7 源码分析-4 server初始化背后getServer().init()
2011-03-11 19:06 1351tomcat 7 源码分析-4 server初始化背后get ... -
tomcat 7 源码分析-3 使用Digester读取xml文件实例化server
2011-03-11 19:05 1387tomcat 7 源码分析-3 使用Digester读取xm ... -
tomcat 7 源码分析-2 类加载ClassLoader
2011-03-11 19:04 1932tomcat 7 源码分析-2 类加载ClassLoader ... -
Tomcat的四种基于HTTP协议的Connector性能比较
2011-03-11 17:58 1114Tomcat的四种基于HTTP协议的Connector性能比较 ...
相关推荐
cluster-redis-session-manager-3.0.jar":这是Tomcat Redis Session Manager的核心组件,实现了Tomcat的Session监听器和Manager接口,使得Tomcat能够将Session数据存储到Redis中,并在需要时从Redis中读取。...
- **Tomcat**: 版本7及以上,作为应用容器。 - **Jenkins**: 版本2.107.1,用于持续集成和持续部署。 - **Linux**: CentOS 6及以上版本,作为服务器操作系统。 2. **Jenkins插件**: - **Ansible Plugin**: 执行...
Tomcat支持多语言环境,源码中的LocalStrings.properties文件用于存储国际化文本,通过Locale对象切换不同语言版本。 总的来说,Tomcat源码的学习不仅能帮助开发者深入了解Web服务器的工作原理,还能提升解决实际...
在Tomcat启动时,它会读取`logging.properties`并根据配置使用Log4j进行日志记录。如果需要针对特定Web应用进行更细粒度的日志控制,可以在Web应用的`WEB-INF/classes`目录下放置自己的`log4j.properties`或`log4j....
### Tomcat跨域解决方案 #### 一、背景与问题描述 在现代Web开发中,由于浏览器的安全策略限制,不同源之间的资源访问会受到限制,这种现象被称为“同源策略”(Same-Origin Policy)。同源策略是为了保护用户数据...
### Domino与Tomcat的集成详解 #### 一、引言 随着互联网技术的发展,企业级应用对于Web服务的需求越来越高。Domino作为一款优秀的办公自动化工具,一直以来都以其强大的邮件处理功能和文档管理能力受到用户的青睐...
- 首先,从官方网站下载对应Tomcat版本的Commons DBCP源码包。 - 打开`org.apache.commons.dbcp.BasicDataSourceFactory`类,找到处理密码的部分代码: ``` value=properties.getProperty(PROP_PASSWORD); if...
"IDEA WEB项目启动不加载application.properties配置文件" 在本篇文章中,我们将讨论IDEA WEB项目启动不加载application.properties配置文件的问题。这个问题可能是由于项目中使用的SpringBoot版本不一致引起的。...
- Tomcat会读取`conf/catalina.properties`、`conf/server.properties`等配置文件,获取服务器的默认设置。 - `webapps`目录下的每个应用都有对应的`WEB-INF/web.xml`,定义了应用的部署信息,Tomcat会逐一解析...
1. 将`cors-filter-1.7.jar`添加到Tomcat的`lib`目录下,确保Tomcat能够加载这个库。 2. 创建一个配置文件,例如`CORSFilter.properties`,其中定义跨域策略。比如: ``` allowed.origins=http://example.com, ...
在Windows 2003操作系统环境下,为了实现WebFocus系统的部署与运行,通常会采用IIS作为Web服务器,Tomcat作为应用服务器的架构。这种配置能够有效地支持动态网页、脚本执行以及更为复杂的Web应用需求。接下来,我们...
3. 加载properties文件:通过`java.io.FileInputStream`和`java.util.Properties`类读取properties文件,并使用`load`方法加载文件中的内容。 4. 获取配置项:使用`getProperty`方法根据key值获取properties文件中...
它们通常使用ISO-8859-1编码,但为了支持中文等非ASCII字符,我们需要将其编码转换为UTF-8。 1. **编码问题**: - **创建阶段**:当你编辑.properties文件时,确保编辑器(如Notepad++、Eclipse、IntelliJ IDEA等...
1.列出系统上的用户 2.另一种方法 3.推荐使用的 八、用户间通信-------------------------------------------------------------------------------------- 1.发送消息 2.接受消息和拒绝消息 九、发一封邮件--...
# 指定 mod_jk 模块需要读取的配置文件 workers.properties 的位置 JkWorkersFile /usr/local/apache/conf/workers.properties # 设置 mod_jk 日志文件的位置 JkLogFile /usr/local/apache/logs/mod_jk.log # 设置...
总之,理解和掌握Tomcat服务器的配置、启动分析及Servlet文件配置是Java Web开发者的必备技能。通过学习这些内容,开发者能够有效地管理Tomcat服务器,优化应用性能,以及提供稳定、安全的Web服务。不断探索和实践,...
在Web开发中,属性文件通常用于存储配置信息,如数据库连接字符串、系统参数或本地化文本。这些文件通常以`.properties`为扩展名,并且位于应用程序的`WEB-INF`或`webroot`目录下,以便于访问和管理。在本文中,我们...
1. 加载服务器配置:Tomcat读取`conf/server.xml`文件,这是服务器的主要配置文件,定义了服务器的端口、连接器、上下文等。 2. 初始化:Tomcat初始化各个模块,如JMX注册、JNDI目录等。 3. 加载 Realm:Realm是...