WebLogic10.3 如何设置热部署?
来源:互联网 发布:那曲网络怎么样 编辑:程序博客网 时间:2024/05/18 00:54
请问,如何设置才能让它不自动发布呢?
WebLogic是10.3
谢谢大家了。
要实现热部署,就必须自定义ClassLoader,当类被修改过后,加载该类。下面通过代码说明:
package classloader;
/**
* @author vma
*/
// 自定义一个类加载器
public class DynamicClassLoader extends ClassLoader {
public Class<?> findClass(byte[] b) throws ClassNotFoundException {
return defineClass(null, b, 0, b.length);
}
package classloader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
/**
* @author vma
*/
public class ManageClassLoader {
DynamicClassLoader dc =null;
Long lastModified = 0l;
Class c = null;
//加载类, 如果类文件修改过加载,如果没有修改,返回当前的
public Class loadClass(String name) throws ClassNotFoundException, IOException{
if (isClassModified(name)){
dc = new DynamicClassLoader();
return c = dc.findClass(getBytes(name));
}
return c;
}
//判断是否被修改过
private boolean isClassModified(String filename) {
boolean returnValue = false;
File file = new File(filename);
if (file.lastModified() > lastModified) {
returnValue = true;
}
return returnValue;
}
// 从本地读取文件
private byte[] getBytes(String filename) throws IOException {
File file = new File(filename);
long len = file.length();
lastModified = file.lastModified();
byte raw[] = new byte[(int) len];
FileInputStream fin = new FileInputStream(file);
int r = fin.read(raw);
if (r != len) {
throw new IOException("Can't read all, " + r + " != " + len);
}
fin.close();
return raw;
}
}
测试类;Main 每隔 5s 加载一次
package classloader;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
*
* @author vma
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ClassNotFoundException, IOException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException, InterruptedException {
String path = "D:\\deploy\\JDBC\\ClassLoader\\build\\classes\\classloader\\LocalClass.class";
ManageClassLoader mc = new ManageClassLoader();
while(true){
Class c = mc.loadClass(path);
Object o = c.newInstance();
Method m = c.getMethod("getName");
m.invoke(o);
System.out.println(c.getClassLoader());
Thread.sleep(5000);
}
}
被加载的类
/**
*
* @author vma
*/
public class LocalClass {
public void getName() {
System.out.println("hahaha ");
}
}
运行时,每隔5s 输出:
hahaha
classloader.DynamicClassLoader@61de33
当我们修改 System.out.println("hahaha "); ---> System.out.println("changed "); 编译LocalClass后
输出变为:
changed
classloader.DynamicClassLoader@173a10f
在loadClass中, 我们必须重新初始化一个ClassLoader,负责就会违背同一个ClassLoader是不允许多次加载一个类的。
public Class loadClass(String name) throws ClassNotFoundException, IOException{
if (isClassModified(name)){
dc = new DynamicClassLoader();
return c = dc.findClass(getBytes(name));
}
return c;
}
当然,容器的实现机制肯定及其完善,不可能周期性的加载,可能回通过监听机制,动态加载修改过的类。但它的实现机制肯定也是重新
实例化一个ClassLoder,加载需要加载的类。
- WebLogic10.3 如何设置热部署?
- weblogic10.3 如何实现热部署
- Myeclipse+weblogic10+Tapestry工程热部署解决方法!
- Tomcat设置热部署
- myeclipse2014设置热部署
- idea设置热部署
- Weblogic10.3_Windows优化设置
- Weblogic10.3_Windows优化设置
- weblogic10中如何设置开发模式
- weblogic10.3 部署tomcat应用 心得
- hibernate3 部署weblogic10.3报错
- weblogic10.3安装-部署应用图解
- IDEA中设置热部署
- WildFly 10设置热部署
- 设置springboot为热部署
- JavaWeb Tomcat如何热加载/热部署
- jbuilder2006下部署weblogic10
- WebLogic10.3.3部署SSH2
- java环境配置path classpath java_home
- CRF条件随机场简介
- xml python
- Ios左右菜单PPRevealSideviewController使用的一些心得
- 浮点型精度,数组越界,debug和release下运行的区别,release下的调试
- WebLogic10.3 如何设置热部署?
- Oracle的日期时间 to_date和to_char
- js数组判断提交数据是否存在相同数据
- 大话数据结构心得:(二)算法
- C++的异常处理
- 1.游戏服务器相关技术
- omnet veins 错误No packet was ready
- POJ1785(笛卡尔树的构造)
- 备库启动redo应用