weblogic EJB客户端使用NativeIO

来源:互联网 发布:小译软件 编辑:程序博客网 时间:2024/05/19 18:41

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

public class SocketMuxerDefeat {

    ClassPool pool = ClassPool.getDefault();

    pool.insertClassPath("D:\\servers\\bea1032\\wlserver_10.3\\server\\lib\\weblogic.jar");

   CtClass cc = pool.get("weblogic.socket.SocketMuxer");

  CtMethod m = cc.getDeclaredMethod("makeTheMuxer", param);

   /*
            m.insertBefore("String sn=System.getProperty(\"weblogic.MuxerClass\");if(sn!=null){" +
            " if(sn.equalsIgnoreCase(\"weblogic.socket.PosixSocketMuxer\")){"+
                " System.out.print(\"weblogic.socket.PosixSocketMuxer\");return new weblogic.socket.PosixSocketMuxer();" +
            " }else if(sn.equalsIgnoreCase(\"weblogic.socket.NIOSocketMuxer\")){ "+
            "    System.out.print(\"weblogic.socket.NIOSocketMuxer\"); return new weblogic.socket.NIOSocketMuxer(); "+
            " }else if(sn.equalsIgnoreCase(\"weblogic.socket.DevPollSocketMuxer\")){ "+
            "    System.out.print(\"weblogic.socket.DevPollSocketMuxer\"); return new weblogic.socket.DevPollSocketMuxer(); "+
            " }else if(sn.equalsIgnoreCase(\"weblogic.socket.NTSocketMuxer\")){ "+
            "    return new weblogic.socket.NTSocketMuxer();}}");
            */
            m.insertBefore("return new weblogic.socket.PosixSocketMuxer();");
            // 保存到文件里
            CtMethod m2 = cc.getDeclaredMethod("getNativeMuxerClassName", param);
            // 插入新的代码
            m2.insertBefore("return \"weblogic.socket.PosixSocketMuxer\";");
            
            //CtMethod m3 = cc.getDeclaredMethod("initSockCreateTimeoutProp", param);
            // 插入新的代码
            //m3.insertBefore("return Integer.getInteger(System.getProperty(\"weblogic.client.socket.ConnectTimeout\"), 0).intValue();");           

            cc.writeFile("D:\\");

   }
}

           

将生成的class文件替换weblogic.jar中的对应的文件,将libmuxer.so设置到LD_LIBRARY_PATH





原创粉丝点击