当前位置: 首页 > Java > 正文

java获取tomcat绝对地址

1 星2 星3 星4 星5 星 (暂无评分)
Loading ... Loading ...
baidu_share

在我们自动部署系统中,一台机器只能属于一个分组,即同一个配置文件。而我们需求是,一台机器,启动4个实例,4个实例实现不同配置文件。
配置文件差异主要在于连接数据库不同。

1.tomcat配置数据源.

<Context reloadable="true" > 
    <Resource  
        name="jdbc/ DBname " 
        auth="Container"  
        type="javax.sql.DataSource" 
        maxActive="100" maxIdle="30" maxWait="10000" 
        username="root" password="123"  
        driverClassName="com.mysql.jdbc.Driver" 
        url="jdbc:mysql://localhost:3306/ DBname?autoReconnect=true" 
    /> 
</Context>

元素的属性说明:
Name:指定Resource资源的JNDI名称;
auth:可选填Container或Application,指定Resource的管理者;
type:指定Resource资源的Java类名;
maxActive:设置数据库连接池中活动状态连接的最大数目,为0则不受限制;
maxIdle:设置数据库连接池中空闲状态连接的最大数目,为0则不受限制;
maxWait:设置数据库连接池中空闲状态连接的最长等待时间,超时则抛出异常,为-1则可无限等待;
username:指定数据库的用户名;
password:指定连接数据库的密码;
driverClassName:指定数据库的JDBC驱动器的Driver实现类名字(这里为MySQL数据库连接);
url:连接数据库的url。

注:可在/conf/server.xml 文件中的对应元素中如上配置子元素以供Tomcat容器内的多个Web应用使用。

配置JNDI资源引用web.xml:
Java Web应用中要使用JNDI资源,必须在web.xml中配置对该JNDI资源的引用元素。内容如下:

<web-app> 
    <resource-ref> 
        <description>DB Connection</description> 
        <res-ref-name>jdbc/DBname </res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
    </resource-ref> 
</web-app>

元素的子元素说明:
description:对所引用JNDI资源的描述;
res-ref-name:引用的JNDI资源的名称,与上面元素中的name属性一致;
res-type:引用的JNDI资源的类名称,与上面元素中的type属性一致;
res-auth:引用资源的管理者,上面元素中的auth属性一致;

Context sourceCtx = new InitialContext(); 
DataSource ds = 
     (DataSource) sourceCtx.lookup("java:comp/env/jdbc/ DBname "); 
conn = ds.getConnection();

使用DataSource方式连接数据库,当使用完数据库操作之后调用各种资源对象的close方法时,由Tomcat容器调回这些连接到连接池中进行管理,而不是直接与数据库断开连接。

2.通过获取当前项目却对地址,tomcat绝对路径,然后通过配置服务,获取对应的数据库实例

获取项目地址

request.getSession().getServletContext().getRealPath("/");

获取tomcat的webapps地址

System.getProperty("user.dir").replace("bin", "webapps");

获取项目的classpath地址

方法一:Thread.currentThread().getContextClassLoader().getResource("") 
方法二:this.getClass().getResource("/")

3. Java获取当前进程ID(PID)

// get name representing the running Java virtual machine.    
String name = ManagementFactory.getRuntimeMXBean().getName();    
System.out.println(name);    
// get pid    
String pid = name.split("@")[0];    
System.out.println("Pid is:" + pid);

4.在tomcat的server目录建立lib子目录,把配置文件放进去。通过Java类加载机制把配置文件加载到程序中。不同tomcat实例加载不同不同配置文件,从而实现需求。

程序spring配置如下:

<bean id="orderTaskConfigProperties"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="locations">
			<list>
 
				<value>classpath:properties/ordertaskmq.properties</value>
				<value>classpath:properties/ordertaskworker.properties</value>
<!-- ordertaskdb.properties在tomcat目录下的server/lib目录里-->
				<value>classpath:properties/ordertaskdb.properties</value>
			</list>
		</property>
	</bean>
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
		<property name="properties" ref="orderTaskConfigProperties" />
		<property name="ignoreUnresolvablePlaceholders" value="true" />
	</bean>

本文固定链接: http://www.chepoo.com/java-get-tomcat-absolute-path.html | IT技术精华网

java获取tomcat绝对地址:等您坐沙发呢!

发表评论