Weblogic服务器lib VS实例libext

发布于 2024-09-04 11:07:44 字数 550 浏览 6 评论 0原文

我使用的是weblogic 10。 它提供了一个 Oracle JDBC 驱动程序 10.2.0.2(位于 weblogic home 上的 server/lib 中)。

实际上,工作中有人很久以前就将 10.2.0.3 驱动程序放在实例 libext 文件夹中。

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

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

libext 不应该像 META-INF 库覆盖 libext 一样覆盖服务器库吗?

顺便说一句,我们处于一个奇怪的情况: - 我们有 2 个 EAR,对于这 2 个中完全相同的处理,其中一个有时会抛出 oracle 驱动程序空指针,而另一个则不会 - 我想知道是否一只耳朵没有使用 10.2.0.2,而另一只耳朵正在使用 10.2.0.3(我看到修复了一个错误,可以解决我们这个版本的问题)。 - 我需要看起来更好,但乍一看两只耳朵都使用 weblogic JNDI 资源中完全相同的数据源集

有什么想法吗?

I use weblogic 10.
Its provide an Oracle JDBC driver 10.2.0.2 (in the server/lib on weblogic home).

Actually someone at work put a long time ago a 10.2.0.3 driver in instance libext folder.

But in production we got a jdbc driver stack (nullpointer :O) and by reverse engineering it seems we are using driver 10.2.0.2.

We know that we could change the driver in the server/lib of weblogic but i want to understand.

Isn't libext supposed to override server libs like META-INF libs override libext?

By the way we are in a strange situation:
- We have 2 EAR, and for the exact same treatment in those 2, one will sometime throw the oracle driver nullpointer while the other doesn't
- I wonder if one ear isn't using 10.2.0.2 while the other is using 10.2.0.3 (i saw a bug fixed that could fit to our problem for this version).
- I need to look better but at first sight both ear use the exact same datasource set in weblogic JNDI resources

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狂之美人 2024-09-11 11:07:44

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

正如你所说,如果 10.2.0.3 版本是一个错误修复,那么放置它的正确位置将是 server/lib,而不是 lib/ext。

两个 EAR 意味着两个独立的服务器或两个不同的端口?我不确定为什么 WebLogic 对于相同的配置会选择一个驱动程序而不是另一个驱动程序。

No one should be putting anything into the lib/ext directory, especially not JDBC driver JARs. That directory is for library extensions. I'd remove that JAR from lib/ext immediately.

As you say, if the 10.2.0.3 version is a bug fix, the correct place to put it would be server/lib, not lib/ext.

Two EARs means two separate servers or two different ports? I'm not sure why WebLogic would pick one driver up over the other for the same configuration.

℡寂寞咖啡 2024-09-11 11:07:44

正如 @duffymo 和 Oracle 文档所述: http:// download.oracle.com/docs/cd/E11035_01/wls100/jdbc_admin/third_party_drivers.html#wp1048361 驱动程序位置应为 server/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());
}

As @duffymo and Oracle docs state: http://download.oracle.com/docs/cd/E11035_01/wls100/jdbc_admin/third_party_drivers.html#wp1048361 the driver location should be server/lib.

Can you run this from a JSP on each EAR - this should give you the jar file from where the driver is loaded.

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());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文