META-INF里面的信息主要是,描述版本号、classpath、入口类、jdk版本等信息,基本上我们关注的主要是jdk版本(防止出现major52等报错)和入口类(可执行的jar需要有)
所以普通的Jar项目,如果你不导出可执行jar包的时候,是不会生成META-INF信息的
而对于WEB项目,基本上我们不会对META-INF做什么管理甚至都不会关注,因为classpath我们会配置好,java web开发(可以了解一下基础)过程中项目也不存在所谓的入口类,但是如果你需要通过JNDI的方式访问数据库,有可能会有一些配置文件放在里面,但这种方式现在很少用了
部署在Tomcat中的webapps目录下的程序要使用数据源,可以直接修改%tomcat%/conf/server.xml中的<context>,在这个标签下增加:
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>...
这样webapps目录下的程序都可以使用由Tomcat指定的数据源。
你这种在web应用目录下面的app/META-INF/context.xml文件中添加数据源配置是一样的,最终都是由Tomcat来处理。但是Tomcat5.0及之前的版本和5.0之后的版本的数据源配置文件是不一样的,所以需要根据版本使用不同的XML配置格式
JBoss是集成Tomcat的,使用不论是Tomcat和JBoss,其基本功能都是一样的!所以都会对你配置的appMETA-INF/context.xml文件进行解析。。
不过需要注意不同的JBoss版本集成的Tomcat版本也不同,你可以在你安装的JBoss的说明文件中找到其集成的Tomcat版本,在Jboss官网上也可以找到。
因此如果你本地使用的是tomcat6.0,那么最好使用集成tomcat6.0的JBoss.
对于其它的应用服务器,如Weblogic,webspare等都有自已的数据源文件配置格式,所以是不能通用的。
找到这里就是因为我想获取一个 Instrumentation 实例, 但又不知道更优雅的方法,参见下面的代码。谁有更简洁的方法,请跟贴!
如何获取 instrumentation 实例:
package com.taotling.instrument.insanceimport java.lang.instrument.Instrumentation
public class MyJVMTIAgent {
public static Instrumentation instrumentation
public static void premain(String agentArgs, Instrumentation inst){
instrumentation = inst
}
public static Instrumentation getInstrumentation() {
return instrumentation
}
}
将上面的代码打为JAR包,比如我取名为 agent.jar, 添加 META-INF/MANIFEST.MF, 内容为:
Manifest-Version: 1.0Premain-Class: com.taotling.instrument.insance.MyJVMTIAgent
然后在你要调用 Instrumentation 实例的类比如 Test 类, 通过 -javaagent VM 选项使用这个上面的JAR包:
java -javaagent:"F:\test\myagent.jar" TestTest 类代码
import com.taotling.instrument.insance.MyJVMTIAgentimport java.lang.instrument.Instrumentation
public class Test {
public static void main(String[] args) throws InterruptedException {
Instrumentation instrumentation = MyJVMTIAgent.getInstrumentation()
System.out.println("instrumentation instance : " + instrumentation)
System.out.println("the size of empty Object instance is " + instrumentation.getObjectSize(new Object()) + " bytes. ")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)