Jakarta ee Weblogic服务器lib与实例libext

Jakarta ee Weblogic服务器lib与实例libext,jakarta-ee,weblogic,application-server,Jakarta Ee,Weblogic,Application Server,我使用WebLogic10。 它提供了一个Oracle JDBC驱动程序10.2.0.2(在weblogic home上的服务器/库中) 实际上,很久以前有人在instance libext文件夹中放置了一个10.2.0.3驱动程序 但在生产中,我们得到了一个jdbc驱动程序堆栈(nullpointer:O),通过逆向工程,我们似乎正在使用驱动程序10.2.0.2 我们知道我们可以在weblogic的服务器/库中更改驱动程序,但我想了解 libext不应该像META-INF libs重写libe

我使用WebLogic10。 它提供了一个Oracle JDBC驱动程序10.2.0.2(在weblogic home上的服务器/库中)

实际上,很久以前有人在instance libext文件夹中放置了一个10.2.0.3驱动程序

但在生产中,我们得到了一个jdbc驱动程序堆栈(nullpointer:O),通过逆向工程,我们似乎正在使用驱动程序10.2.0.2

我们知道我们可以在weblogic的服务器/库中更改驱动程序,但我想了解

libext不应该像META-INF libs重写libext那样重写服务器libs吗

顺便说一下,我们现在的处境很奇怪: -我们有两个EAR,对于这两个EAR中完全相同的处理,其中一个有时会抛出oracle驱动程序nullpointer,而另一个则不会 -我想知道是否一只耳朵没有使用10.2.0.2,而另一只耳朵使用10.2.0.3(我看到一个bug修复了,可能适合我们这个版本的问题)。 -我需要看起来更好,但乍一看,两个ear使用weblogic JNDI资源中完全相同的数据源集


有什么想法吗?

任何人都不应该将任何内容放入lib/ext目录,尤其是JDBC驱动程序JAR。该目录用于库扩展。我会立即从lib/ext中删除这个JAR

正如您所说,如果10.2.0.3版本是一个bug修复程序,那么正确的位置应该是server/lib,而不是lib/ext


两个耳朵是指两个独立的服务器还是两个不同的端口?我不知道为什么WebLogic会为相同的配置选择一个驱动程序而不是另一个。

正如@duffymo和Oracle文档所述:驱动程序位置应该是服务器/lib

您可以在每个EAR上从JSP运行它吗?这将为您提供加载驱动程序的jar文件

try {
  String candidate = "oracle.jdbc.driver.OracleDriver";
  Class clazz = Class.forName(candidate);
  java.security.ProtectionDomain dom = clazz.getProtectionDomain();
  java.security.CodeSource cs = dom.getCodeSource();
  java.net.URL url = cs.getLocation();
  out.println("<TITLE>" + candidate + "</TITLE></head><body>");
  out.println("Path for " + candidate + " = " + url.getFile());
} catch (Exception t) {
  t.printStackTrace(response.getWriter());
}
试试看{
字符串candidate=“oracle.jdbc.driver.OracleDriver”;
clazz类=Class.forName类(候选人);
java.security.ProtectionDomain dom=clazz.getProtectionDomain();
java.security.CodeSource cs=dom.getCodeSource();
java.net.URL=cs.getLocation();
out.println(“+candidate+”);
println(“路径为“+candidate+”=“+url.getFile());
}捕获(异常t){
t、 printStackTrace(response.getWriter());
}

实际上,我在10.2.0.3的发行说明中看到了一个已修复的错误:4688156 NullPointerException如果发生网络错误,则可能出现异常->我想这就是我们得到的。。。此外,Weblogic文档本身说,为了更新驱动程序,我们可以替换服务器/lib中的文件,我完全不知道为什么它会使用一个驱动程序作为ear,另一个驱动程序作为另一个。。。这是我发现的唯一可以解释为什么一种常见的处理方法(初始化翻译缓存)只能使用一个ear而不能使用另一个ear(应用程序启动时大约40%失败)…但实际上,我的问题不是要知道将jdbc驱动程序放在libext中是否是一种好的做法,而是它是否应该覆盖oracle jdbc驱动程序提供的weblogic:)我想你已经有了答案:“有时”。在我看来,这不是一个非常令人满意的答案。从lib/ext中删除JAR-除了Sun的扩展之外,您不应该在那里放置任何东西。对于那些不理解CLASSPATH或者认为自己很聪明的人来说,它并不是一个拐杖。