我们有一个可以用来构建JDBC驱动程序的java库(更像是一个框架)。该框架实现了JDBC接口,您实现了框架使用的一些接口来实现驱动程序。
出现的一个问题是,如果使用此框架创建两个驱动程序,并尝试在单个JVM中同时使用它们,则只会加载一组框架类。
这至少有两个原因:
使用的解决方案是为每个驱动程序重命名框架类包,以便它们不再发生冲突。虽然这很有效,但是在我们测试之后会发生对字节码操作的担忧。
我的问题:有更好的方法吗?这需要从我们这边处理,而不是应用程序,因为应用程序仅将驱动程序用作JDBC驱动程序,因此它需要是透明的。
我的一个想法是将驱动程序的所有类(除了实现Driver / DataSource的'entrypoint'类)序列化为某种资源,该资源打包在驱动程序jar中(使用资源的FQN和入口点类对于驱动程序是唯一的,然后在静态初始化块中具有入口点类,读出类并使用私有类加载器加载它们。这种方法是否有任何明显的问题?